运行应用程序时,如何传递Java命令执行的附加jar?

时间:2019-01-27 22:11:05

标签: java gradle runtime-error classpath

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

我的gradle构建配置似乎很好,因为我可以导入和使用其他项目中的类,并且可以编译。但是,当我尝试从命令行运行应用程序时,出现错误...

  

线程“主”中的异常java.lang.NoClassDefFoundError:   DawCLI.main(DawCLI.java:17)上的dawcore / SamplerInstrument,由以下原因引起:   java.lang.ClassNotFoundException:dawcore.SamplerInstrument位于   java.net.URLClassLoader.findClass(URLClassLoader.java: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();
    }
}

根据文档,我似乎正确地做到了这一点,但是仍然出现错误。任何对此的见解将不胜感激!

谢谢

1 个答案:

答案 0 :(得分:0)

解决方案是用冒号代替定界分号。即使-docs命令上的javadocs的第一行指示您应使用分号。

这可能是因为我在linux上运行,并且这些文档指示Windows。

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

相关问题