簡體   English   中英

運行應用程序時,如何傳遞Java命令執行的附加jar?

[英]How do I pass an additional jar do my java command when running application?

我有一個Java gradle projectA,它引用了另一個以lib構建的java gradle projectB。

我的gradle構建配置似乎很好,因為我可以導入和使用其他項目中的類,並且可以對其進行編譯。 但是,當我嘗試從命令行運行應用程序時,出現錯誤...

線程“主”中的異常java.lang.NoClassDefFoundError:DawCLI.main(DawCLI.java:17)處的dawcore / SamplerInstrument導致原因:java.net.URLClassLoader.findClass(URLClassLoader.java處的java.lang.ClassNotFoundException:dawcore.SamplerInstrument。 :382)在java.lang.ClassLoader.loadClass(ClassLoader.java:424)在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:349)在java.lang.ClassLoader.loadClass(ClassLoader.java:357) ...還有1個

似乎在抱怨它無法在運行時加載jar中的類。 但是我不知道如何讓它成功加載那些類。

我當前不引用jar的運行命令如下。

/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/bin/java -ea -cp "build/classes/main/" DawCLI

運行此命令將產生最初提到的錯誤。

然后,我閱讀有關java -cp參數的文檔。 它說提供額外的類路徑目錄,用分號分隔它們。

我經常將運行命令更新如下。

/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/bin/java -ea -cp "build/classes/main/;../DawCore/build/libs/DawCore.jar" DawCLI

這給了我以下錯誤。

錯誤:找不到或加載主類DawCLI

我的主要功能如下。

import dawcore.*;

public class DawCLI {
    public static void main (String [] args) throws IOException {
        SamplerInstrument samplerkick = new SamplerInstrument();
    }
}

根據文檔,我似乎正確地做到了這一點,但是仍然出現錯誤。 任何對此的見解將不勝感激!

謝謝

解決方法是用冒號代替定界分號。 即使javadocs on -cp命令的第一行指示您應使用分號。

這可能是因為我在Linux上運行,並且這些文檔指示Windows。

https://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM