package 的问题

时间:2008-06-19 14:27:10   来源:论坛整理  作者:  编辑:chinaitzhe
Java code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/



//文件名:Operator.java

package book.basic;



public class Operator

{

    private void computeOperator()

    {

        int a=8;

        int b=5;

        int f=a/b;

        double g=a/b;

        System.out.println("(f=a/b)=" f "; (g=a/b)=" g);

        double h=a/(b*1.0d);

        float i=a/(b*1.0f);

        System.out.println("(h=a/(b*1.0d))=" h "(i=a/(b*1.0f))" i);

    }

    

    private void compareOperator()

    {

        int a=5;

        int b=10;

        System.out.println("(a==b)=" (a==b));

        System.out.println("(a<b)=" (a<b));

        System.out.println("(a>b)=" (a>b));

        System.out.println("(a!=b)=" (a!=b));

        System.out.println("(a<=b)=" (a<=b));

        System.out.println("(a>=b)=" (a>=b));

    }

    

    private void bitOperator()

    {

        byte a=23;

        byte b=26;

        int c=a&b;

        System.out.println("(c=a&b)=" c);

        int d=a|b;

        System.out.println("(d=a|b)=" d);

        int e=a^b;

        System.out.println("(e=a^b)=" e);

        int f=~a;

        System.out.println("(f=~a)=" f);

        int g=a>>1;

        System.out.println("(g=a>>1)=" g);

        int h=a>>>1;

        System.out.println("(h=a>>>1)=" h);

        System.out.println("(-24>>>1)=" (-24>>1) "\t(-24>>>1)" (-24>>>1));

        int i=a<<1;

        System.out.println("(i=a<<1)=" i);

    }

    public static void main(String[] args)

    {

        Operator test = new Operator();

        System.out.println("计算运算符方法的输出:");

        test.computeOperator();

        System.out.println("比较运算符方法的输出:");

        test.compareOperator();

        System.out.println("位运算符方法的输出:");

        test.bitOperator();

    }

    

    

    }



运行错误

错误信息如下:
java.lang.NoClassDefFoundError: Operator (wrong name: book/basic/Operator)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Operator. Program will exit.
Exception in thread "main"


第二行package book.basic 是什么东西啊,是否与路径有关?我电脑里设置的路径如下:

CLASSPATH .;D:\Sun\AppServer\jdk\lib\tools.jar;D:\Sun\AppServer\jdk\lib\dt.jar;D:\Sun\AppServer\jdk\lib\tools.jar;D:\Sun\AppServer\lib\j2ee.jar;D:\tomcat\bin

JAVA_HOME D:\Sun\AppServer\jdk


网友回复:此回复为自动发出,仅用于显示而已,并无任何其他非凡作用
楼主截止到2008-06-19 13:04:45的汇总数据:
注册日期:2008-6-5
上次登录:2008-6-7
发帖数:6
结贴数:5
结贴率:83.33%
楼主加油
网友回复:你是用cmd运行的?
网友回复:我是在 UltraEdit 按 F9 直接使用命令 java Operator 运行的,可能跟用 cmd 运行一样吧。
网友回复:建议重新安装jdk!
------------------
网友回复:应该 java book.basic.Operator

运行的时候类名要加上包名

才可以
网友回复:
引用 4 楼 ryan0629 的回复:
建议重新安装jdk!
------------------


why?
网友回复:java.lang.NoClassDefFoundError的错误,这是因为java解释器找不到
你要运行的类文件。按通常做法是在ClassPath中加入".;"来设定让java
到当前目录下查找要运行的类文件,但是这个办法只适合没有包结构的
最简单的java类文件。对于大多数有包结构的类文件则仍然会出现同样
的错误。
最好的解决办法是,举个例子对于HelloWorld.class文件,它的包
结构为package com.system.register.hello; 你要找到编译生成的
class文件存放的位置,假定路径是C:\xxx\com\system\register\hello\HelloWorld.class
在classpath里加上C:\xxx;
或者你可以在某个盘(假定F盘)下建一个class文件夹,找到编译后文件的package根目录,
对于上边例子就是com文件夹,注重:将com文件夹拷贝到class文件夹目录下
然后在classpath里加上F:\class;
网友回复:
引用 5 楼 interpb 的回复:
应该 java book.basic.Operator

运行的时候类名要加上包名

才可以


不行,还是那个错误
网友回复:你直接运行 ? 难道不需要编译吗?


这样吧 你用命令去做吧

先把这个文件拷到D盘根目录下面

然后进入命令行吧当前目录切换到d的目录

javac -d . Operator.java //编译,并在当前目录下面生成包结构


java book.basic.Operator //运行 类名要加包名
网友回复:
引用 6 楼 interpb 的回复:
引用 4 楼 ryan0629 的回复:
建议重新安装jdk!
------------------


why?


曾经似乎碰到过类似的,为什么我也不知道
网友回复:编译:

javac book.basic.Operator.java

运行:

java book.basic.Operator
网友回复:任意一个ClassPath路径/book/basic/Operator.class
按上面放置 class 文件,然后
java book.basic.Operator

网友回复:
引用 5 楼 interpb 的回复:
应该 java book.basic.Operator

运行的时候类名要加上包名

才可以


wrong name: book/basic/Operator
这里应该说明了运行的就是java book.basic.Operator
网友回复:有个建议,先试运行个简单的HelloWorld
网友回复:实在不行就在eclipse里建工程吧,然后直接在eclipse里运行。
网友回复:
引用 13 楼 ryan0629 的回复:
引用 5 楼 interpb 的回复:
应该 java book.basic.Operator

运行的时候类名要加上包名

才可以


wrong name: book/basic/Operator
这里应该说明了运行的就是java book.basic.Operator


你为什么不自己试一下呢 就下结论呢

假如你有一个类Hello 在包test里面

你用java Hello 运行就会报这种错误




网友回复:怎么还没搞定呢?
说到底就是java解释器找不到你要运行的类文件。
你只需把编译好的class文件添加到classpath即可。
具体阅读7楼的内容。
网友回复:
引用 9 楼 interpb 的回复:
你直接运行 ? 难道不需要编译吗?


这样吧 你用命令去做吧

先把这个文件拷到D盘根目录下面

然后进入命令行吧当前目录切换到d的目录

javac -d . Operator.java //编译,并在当前目录下面生成包结构


java book.basic.Operator //运行 类名要加包名


呵呵,终于解决了,不过 -d 是什么啊?
网友回复:
引用 11 楼 kokobox 的回复:
编译:

javac book.basic.Operator.java

运行:

java book.basic.Operator

错误: 无法读取: book.basic.Operator.java
1 错误

网友回复:大家回帖也要有点水准
你要告诉他错在哪里
以后他犯同样的错就可以知道问题所在并加以解决
什么换个IDE之类的都是瞎扯,是偷懒的做法
下次他同一个地方跌倒都不知道为什么


网友回复:
引用 18 楼 JAVA_mentu 的回复:
引用 9 楼 interpb 的回复:
你直接运行 ? 难道不需要编译吗?


这样吧 你用命令去做吧

先把这个文件拷到D盘根目录下面

然后进入命令行吧当前目录切换到d的目录

javac -d . Operator.java //编译,并在当前目录下面生成包结构


java book.basic.Operator //运行 类名要加包名


呵呵,终于解决了,不过 -d 是什么啊?


-d <目录> 指定存放生成的类文件的位置


网友回复:
引用 17 楼 fsolsh 的回复:
怎么还没搞定呢?
说到底就是java解释器找不到你要运行的类文件。
你只需把编译好的class文件添加到classpath即可。
具体阅读7楼的内容。


加了,不过似乎是编译的问题,不是路径的问题。不管怎样,谢了。
网友回复:
引用 22 楼 JAVA_mentu 的回复:
引用 17 楼 fsolsh 的回复:
怎么还没搞定呢?
说到底就是java解释器找不到你要运行的类文件。
你只需把编译好的class文件添加到classpath即可。
具体阅读7楼的内容。


加了,不过似乎是编译的问题,不是路径的问题。不管怎样,谢了。


对 主要问题编译时没有生成包结构

网友回复:
引用 16 楼 interpb 的回复:
引用 13 楼 ryan0629 的回复:
引用 5 楼 interpb 的回复:
应该 java book.basic.Operator

运行的时候类名要加上包名

才可以


wrong name: book/basic/Operator
这里应该说明了运行的就是java book.basic.Operator


你为什么不自己试一下呢 就下结论呢

假如你有一个类Hello 在包test里面

你用java Hello 运行就会报这种错误


对,谢谢指正,下次下结论前会认真考虑.谢谢
网友回复:9楼帮你解决问题是因为-d参数指定了生产class文件的位置
现在你去自己电脑上看看,应该在不同文件路径下存在2个Operator.class文件
你的问题还是没彻底解决,假如没有把你用IDE编译的存放class的路径添加到classpath
再写一个class还是同样的问题,你只能还用-d来勉强过关
你最好是找到IDE编译的class文件存放路径,将它添加到classpath

网友回复:
引用 17 楼 fsolsh 的回复:
怎么还没搞定呢?
说到底就是java解释器找不到你要运行的类文件。
你只需把编译好的class文件添加到classpath即可。
具体阅读7楼的内容。


不好意思,弄错了,路径后面少了个分号,谢谢了。
网友回复:
引用 25 楼 fsolsh 的回复:
9楼帮你解决问题是因为-d参数指定了生产class文件的位置
现在你去自己电脑上看看,应该在不同文件路径下存在2个Operator.class文件
你的问题还是没彻底解决,假如没有把你用IDE编译的存放class的路径添加到classpath
再写一个class还是同样的问题,你只能还用-d来勉强过关
你最好是找到IDE编译的class文件存放路径,将它添加到classpath


的确多了个 book 路径,呵呵,明天给你加分。
关键字:package,问题,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面