我有一个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();
}
}
根据文档,我似乎正确地做到了这一点,但是仍然出现错误。任何对此的见解将不胜感激!
谢谢
答案 0 :(得分:0)
解决方案是用冒号代替定界分号。即使-docs命令上的javadocs的第一行指示您应使用分号。
这可能是因为我在linux上运行,并且这些文档指示Windows。
https://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html