2017-08-25 92 views
0

projects/plugin/target/mypackage.jar我的classpath怎么没有被使用?

然后,我有projects/runner/Runner.java

当我运行jar tf mypackage.jar,它没有它依赖于一些类。 Runner.javaimport mypackage.MyClass

当我做javac -cp '.:../plugin/target/*' Runner.javarunner文件夹,它抱怨的MyClass一些依赖不可用。我的runner文件夹包含相应的JAR文件。如果我将这些JAR文件复制粘贴到target文件夹中,则编译工作正常。考虑到我在我的类路径中使用.,为什么包不知道在哪里找到正确的JAR?

+1

Java JAR文件始终忽略命令行类路径设置。使用MANIFEST.MF文件设置JAR文件的类路径。 – markspace

+0

谢谢Mark,让我看看两者。如果这是愚蠢的,我会关闭。 –

+0

Err为什么当我执行'javac -help'或'java -help'时,它不会显示'jar'作为选项。 'javac:invalid flag:-jar' –

回答

0

一些建议和诡计后,我发现这工作:

javac -cp './*:../plugin/target/*' Runner.java

的主要区别是./*而非.

如果有人能更好地解释为什么是这样的话,我会很乐意将其标记为答案。

+0

由于保留而无法回答,但[类路径中的_directory_仅用于查找类文件](http://docs.oracle.com/javase /8/docs/technotes/tools/unix/classpath.html#A1100592),而jarfile名称或通配符(不在清单中)用于查找jar文件](http://docs.oracle.com/javase/8 /docs/technotes/tools/unix/classpath.html#A1100762)。因此'.'找到类,但'./*'或'../ plugin/target/*'找到瓶子,而你的Q只提到想找到罐子 –