【发布时间】:2019-01-27 22:11:05
【问题描述】:
我有一个 java gradle projectA,它引用了另一个 java gradle projectB,它构建为一个 lib。
我的 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();
}
}
根据文档,我似乎正确地执行了此操作,但仍然出现错误。对此的任何见解将不胜感激!
谢谢
【问题讨论】:
-
DawCLI是在包中还是默认(无)包中? -
默认无包。
标签: java gradle runtime-error classpath