代码之家  ›  专栏  ›  技术社区  ›  Scorb

运行应用程序时,如何传递额外的jar do java命令?

  •  0
  • Scorb  · 技术社区  · 5 年前

    我有一个javagradleprojecta,它引用另一个javagradleprojectb,作为lib构建。

    线程“main”java.lang.NoClassDefFoundError中出现异常: DawCLI.main(DawCLI。java:17)原因: java.lang.ClassNotFoundException:dawcore.SamplerInstrument位于 java.net.URLClassLoader.findClass(URLClassLoader。java:382)在 java.lang.ClassLoader.loadClass(类加载器。java:424)在 java.lang.ClassLoader.loadClass(类加载器。java:357) ... 还有1个

    我当前的run命令没有引用jar,如下所示。。。。

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

    运行此命令会产生最初提到的错误。

    然后我阅读了关于java-cp参数的文档。它说提供额外的类路径目录,用分号分隔它们。

    我经常更新我的run命令如下。。。。

    /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 回复  |  直到 5 年前
        1
  •  0
  •   Scorb    5 年前

    解决办法是用冒号代替分号。尽管javadocs on-cp命令的第一行指示您应该使用分号。

    这可能是因为我运行的是linux,而那些文档指示的是Windows。

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