java classpath 加载jar包问题
本人JAVA菜鸟,弱弱的问个问题(Centos6.4环境JDK7):我写了个JAVA脚本,路径为:/tmp/Test.java,其中用到了第三方Java类包路径为/jav...
本人JAVA菜鸟,弱弱的问个问题 (Centos 6.4环境 JDK7):
我写了个JAVA脚本,路径为:/tmp/Test.java,其中用到了第三方Java类包路径为/java/mylib/xxx.jar
-- 我通过 javac -classpath /java/mylib/xxx.jar /tmp/Test.java 编译通过了顺利出现Test.class
问题来了:
1.当我运行 java /tmp/Test 报错 【java.lang.NoClassDefFoundError】 没找到xxx.jar包
2.我再运行 java -classpath /java/mylib/xxx.jar /tmp/Test 再次报错【错误: 找不到或无法加载主类 Test】
3.好吧,我设置 CLASSPATH=$CLASSPATH:/java/mylib,再次运行java /tmp/Test 又是【java.lang.NoClassDefFoundError】
4.不服输, 设置 CLASSPATH=$CLASSPATH:/java/mylib/xxx.jar,接着运行java /tmp/Test成功了!
5.出于好奇试了下: 解压xxx.jar包 jar -xf /java/mylib/xxx.jar 再运行 CLASSPATH=$CLASSPATH:/java/mylib/ 再运行 java /tmp/Test 再次成功运行
说明:如果指定classpath目录,java程序只能搜索非jar包的*.class文件,而不会搜索*.jar文件,只有把classpath指定jar文件路径即CLASSPATH=$CLASSPATH:/java/mylib/xxx.jar才能被搜索到(不知道我说的对不对哦,反正我测了下是这个样子滴)
如果按第4种方法的话,我的项目如果需要用到100个JAR包,我岂不是需要在CLASSPATH中加100个JAR?
我的问题是:
有什么方法可以让CLASSPATH读取指定目录下的所有JAR包?
或者除了CLASSPATH还有其他什么办法可以让JAVA程序找到第三方需要用到的包
我试过Eclipse里有个Java Build Path->Libraries 可以自己添加第三方JAR包,点运行,它竟然可以神奇般的编译+运行出来,Eclipse是怎么做到的呀?
请大侠赐教 展开
我写了个JAVA脚本,路径为:/tmp/Test.java,其中用到了第三方Java类包路径为/java/mylib/xxx.jar
-- 我通过 javac -classpath /java/mylib/xxx.jar /tmp/Test.java 编译通过了顺利出现Test.class
问题来了:
1.当我运行 java /tmp/Test 报错 【java.lang.NoClassDefFoundError】 没找到xxx.jar包
2.我再运行 java -classpath /java/mylib/xxx.jar /tmp/Test 再次报错【错误: 找不到或无法加载主类 Test】
3.好吧,我设置 CLASSPATH=$CLASSPATH:/java/mylib,再次运行java /tmp/Test 又是【java.lang.NoClassDefFoundError】
4.不服输, 设置 CLASSPATH=$CLASSPATH:/java/mylib/xxx.jar,接着运行java /tmp/Test成功了!
5.出于好奇试了下: 解压xxx.jar包 jar -xf /java/mylib/xxx.jar 再运行 CLASSPATH=$CLASSPATH:/java/mylib/ 再运行 java /tmp/Test 再次成功运行
说明:如果指定classpath目录,java程序只能搜索非jar包的*.class文件,而不会搜索*.jar文件,只有把classpath指定jar文件路径即CLASSPATH=$CLASSPATH:/java/mylib/xxx.jar才能被搜索到(不知道我说的对不对哦,反正我测了下是这个样子滴)
如果按第4种方法的话,我的项目如果需要用到100个JAR包,我岂不是需要在CLASSPATH中加100个JAR?
我的问题是:
有什么方法可以让CLASSPATH读取指定目录下的所有JAR包?
或者除了CLASSPATH还有其他什么办法可以让JAVA程序找到第三方需要用到的包
我试过Eclipse里有个Java Build Path->Libraries 可以自己添加第三方JAR包,点运行,它竟然可以神奇般的编译+运行出来,Eclipse是怎么做到的呀?
请大侠赐教 展开
2个回答
展开全部
首先你说的 ”只能搜索非jar的*.class文件“的结论是不对的。 实际上是可以load的
读取目录下所有jar的方法是使用 -Djava.ext.dirs=mydir/
读取目录下所有jar的方法是使用 -Djava.ext.dirs=mydir/
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Test.java中有没有package语句。在 tmp目录下运行:
java -cp /java/mylib/xxx.jar:. Test
追问
哦,运行成功了
我刚直接运行 java -cp /java/mylib/xxx.jar Test就出现:找不到或无法加载主类 Test
请问java -cp /java/mylib/xxx.jar:. Test 为什么要在加[:.]?
追答
你的CLASSPATH原来的内容是什么?
$cd /tmp
$javac -cp /java/mylib/xxx.jar -d . Test.java
$java -cp .:/java/mylib/xxx.jar Test
如果你的java源文件里没有 package语句,上面的运行应该没有问题
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询