我的jdk版本是1.4.2,使用xpHome操作系统(正版)CLASSPATH设置为:.;C:\xn(为了做实验,所以只写了这些,而且与《java编程思想》上说的一样)然后在C:\xn目录下写了一个Test.java ,其内容如下:package xi;
public class Test
{
   private int a = 1; 
}
编译之后目录结构变为C:\xn\xi\Test.class,正常产生.class文件,没有问题。然后我在D盘根目录下建立文件Hello.java,内容如下:import xi.*;
public class Hello
{
   public static void main(String arg[])
   {
      Test t = new Test();
   }
}也就是说我想调用C:\xn\xi\下Test这个类,但编译说xi这个包不存在(我用JCreator),错误信息为:D:\hello.java:1: package xi does not exist
import xi.*;
^
请问如何解决?如何设置CLASSPATH才能在任意目录的程序里import自己定义的包呢?谢谢。

解决方案 »

  1.   

    放到
    JAVA\jre\lib\ext下,打包成jar
      

  2.   

    我的目的就是在任意目录下都能import
      

  3.   

    我用的是win98,因为没装宽带,所以也懒得下载新版的jdk,我用的也是j2sdk1.4.2,装在D盘。我的classpath是这样设置的(当然,你的是xp不用这么麻烦):
    在C盘下的Config.sys中输入(只一行):
    SET CLASSPATH=.;D:\j2sdk1.4.2\jre\lib\rt.jar;D:\j2sdk1.4.2\lib\dt.jar;D:\j2sdk1.4.2\lib\tools.jar;D:\j2sdk1.4.2\jre\lib\ext\dnsns.jar;D:\j2sdk1.4.2\jre\lib\ext\ldapsec.jar;D:\j2sdk1.4.2\jre\lib\ext\sunjce_provider.jar;D:\j2sdk1.4.2\jre\lib\ext\localedata.jar;D:\myjavaapi;D:\myprogram
    其中,D:\myjavaapi;D:\myprogram是我自己的包。
    我的path是在c盘的Autoexec.bat中设置的(在我用的dos下,“classpath=......”是无效命令,除非在前面加“set”。另外,命令行有长度限制。当然,可以把所有东西设置在Config.sys中),输入:
    path=%path%;D:\j2sdk1.4.2\bin
    然后,关机(不是重启),再开机。进入ms-dos,键入:set,回车。就能看到设置好的环境变量。我用的是JCreator 3.0,把j2sdk1.4.2设为默认jdk后,它能自动生成如下classpath:
    D:\j2sdk1.4.2\jre\lib\rt.jar;D:\j2sdk1.4.2\lib\dt.jar;D:\j2sdk1.4.2\lib\tools.jar;D:\j2sdk1.4.2\jre\lib\ext\dnsns.jar;D:\j2sdk1.4.2\jre\lib\ext\ldapsec.jar;D:\j2sdk1.4.2\jre\lib\ext\sunjce_provider.jar;D:\j2sdk1.4.2\jre\lib\ext\localedata.jar你只要把这个classpath复制粘贴到你的xp系统的classpath中就行了(前面可以加“.;”)。JCreator允许你在这个classpath中添加你自己的包的path或jar作为JCreator使用的classpath。用JCreator编译运行程序是很方便的(我个人认为JCreator很适合初学者玩弄小段代码),只需在jdk tools的默认项中设置:d:\j2sdk1.4.2\bin\javac.exe
    参数 -deprecation -source 1.4 -g -verbose -classpath $[ClassPath] -d d:\myprogram $[JavaFiles]
    d:\j2sdk1.4.2\bin\java.exe参数 -verbose -classpath $[ClassPath] $[JavaClass]
    如果你要用指向*.bat文件的桌面快捷方式运行程序(jj.class),又不想在系统的classpath中增加该程序所在的包的路径(如D:\kk),可以这样写bat文件:
    javaw(或java) %classpath%;D:\kk jj注:%classpath%是系统的classpath。
      

  4.   

    然后在C:\xn目录下写了一个Test.java ,其内容如下:package xi;
    public class Test
    {
       private int a = 1; 
    }
    编译之后目录结构变为C:\xn\xi\Test.class,正常产生.class文件,没有问题编译之后目录结构变为C:\xn\xi\Test.class??你确定??????????
    嗬嗬,我没用过JCreator,真的很难接受还有JAVA编译器能做出这样的事情
      

  5.   

    我上面有个地方写错了,应该是:
      如果你要用指向*.bat文件的桌面快捷方式运行程序(jj.class),又不想在系统的classpath中增加该程序所在的路径(如D:\kk),可以这样写bat文件:
    javaw(或java) -classpath %classpath%;D:\kk jj注:%classpath%是系统的classpath。用JCreator编译产生的.class文件的路径是由JCreator中的javac的参数-d后的路径决定的,
    如果是-d f:\aa,则产生的类文件放在f:\aa下。
      

  6.   

    import Xi.test.class,用全名就会ok的
      

  7.   

    如果你的操作系统的版本是XP或2000则右键我的电脑,到属性,高级进入环境变量设置,
    点击新建系统变量,变量命:ClassPath然后变量值:.;C:\xn\xi;D:\j2sdk1.4.2\bin