估计还是classpath的问题,你确定你要引用的包在你的classpath中间能找到么?比方说:你有一个没有用jar打包的包ray.of.dawn,你的classpath为".;d:\test"你想这样用:
import ray.of.dawn.*;那么应该具有的目录结构是这样的:d:\test\ray\of\dawn\*.class或者[当前目录]\ray\of\dawn\*.class

解决方案 »

  1.   

    如果包是.jar的,可以考虑把这个.jar也放到classpath中。
      

  2.   

    我的目录就是像下面
    [当前目录]\ray\of\dawn\*.class 这样的目录,
    import ray.of.dawn.*;
      

  3.   

    那你的classpath变量怎么写的呢?
      

  4.   

    .;D:\JAVA\lib\tools.jar;D:\JAVA\lib;e:\javacode;
    如果是放到e:\javacode下的话就可以成功编译运行,拷到其他地方就会提示找不到包。
      

  5.   

    你试试(在你的java源文件的目录)
    javac -classpath e:\javacode xxx.java
    看行不行,行的话把classpath改成
    .;e:\javacode;D:\JAVA\lib\tools.jar;D:\JAVA\lib;
    这样重启控制台,再试试。如果不行,就好好好检查一下细节部分有没有什么疏漏了。
      

  6.   

    可能是什么东西引起了冲突你用javac -classpath这样来编译,看看报不报错。
      

  7.   

    应该是编译方法的问题,如果要调用 C:\ray\of\dawn\a.class  这个类,而在调用文件下应该用
    import ray.of.dawn.a;才行,自己写的类最好用类名,不要写成import ray.of.dawn.*;
    而且这个a.class文件中第一句必须要是package ray.of.dawn;在编译调用包的文件时写法如下:比如文件名上b.javajavac -classpath c:\ b.java
      

  8.   

    javac -classpath c:\ b.java
    这样编译就像编译成功一样,没有任何提示,不过在目录下没有发现.class文件!
      

  9.   

    classpath没有正确设置,java是很讲究类的设置低
      

  10.   

    classpath设置不正确,那为什么运行其他程序又可以?
    把代码拷到classpath指定的目录下又可以运行呢?
      

  11.   

    >>classpath设置不正确,那为什么运行其他程序又可以?
    >>把代码拷到classpath指定的目录下又可以运行呢?关键在于你要用到的包其他程序不一定需要,所以其他程序也有可能正常运行,而你的程序需要这个包却在classpath中间找不到。我的方法试过了么:
    javac -classpath e:\javacode xxx.java
      

  12.   

    javac -classpath e:\javacode xxx.java
    这样编译就像编译成功一样,没有任何提示,不过在目录下没有发现.class文件!
    如果我的代码是放到e:\javacode中的话就可以正确编译运行。
    我的代码烤到了其他地方就不行了。
      

  13.   

    没有发现.class文件,那强制运行呢?提示什么?ClassDefNotFound还是什么?在分析一下可能的原因:
    1、在e:\javacode中能够编译运行,也就是说能够找到包,这时用到的classpath是".",当前目录;
    2、在其他目录不能正确编译,也就是说这时的classpath出问题了,我们假定classpath会找到"e:\javacode"这一项,对吧?但实际上是怎么回事呢?按照你的classpath,(.;D:\JAVA\lib\tools.jar;D:\JAVA\lib;e:\javacode;)编译器依次会找"."(当前目录),"D:\JAVA\lib\tools.jar","D:\JAVA\lib","e:\javacode",在任何一个位置找到了包就不会再往下找了,所以很有可能发生的事是这样:你的某个classpath目录中的包和你希望用到的包冲突了。(所以我前面有一个建议就是把"e:\javacode"提前)我想我说的很详细了,你再仔细找找原因。或者说得再具体点。
      

  14.   

    我本意是把能在e:\javacode编译的源代码剪切c:\test文件夹中编译(我把class文件都删除了,)如果我没有把e:\javacode中的代码删除,程序会调用e:\javacode中的类,而不是我当前文件夹的(c:\test)的,(.;D:\JAVA\lib\tools.jar;D:\JAVA\lib;e:\javacode;)编译器应该先在当前目录查找才对。现在我再classpath中加上了c:\test后,代码就可以成功编译运行,难道每次把代码换一个
    地方都要再classpath中加上该路径?
      

  15.   

    你为什么要把代码换来换去?对于经常引用到的类和包要放在一个相对固定的地方比较合理。再说,如果要换,那么用-classpath指令(如javac -classpath . xxx.java)应该就可以满足你的要求了吧?还有我不是很明白为什么你的classpath加了.还会有问题。给我的感觉你使用包和classpath的方式是有点怪怪的。手边有什么参考书么?再好好看一看。