我的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自己定义的包呢?谢谢。
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自己定义的包呢?谢谢。
JAVA\jre\lib\ext下,打包成jar
在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。
public class Test
{
private int a = 1;
}
编译之后目录结构变为C:\xn\xi\Test.class,正常产生.class文件,没有问题编译之后目录结构变为C:\xn\xi\Test.class??你确定??????????
嗬嗬,我没用过JCreator,真的很难接受还有JAVA编译器能做出这样的事情
。
如果你要用指向*.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下。
点击新建系统变量,变量命:ClassPath然后变量值:.;C:\xn\xi;D:\j2sdk1.4.2\bin