2017-08-25 27 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只提到想找到罐子 –