Как передать дополнительный jar-команду java при запуске приложения? - PullRequest
0 голосов
/ 28 января 2019

У меня есть проект java gradle, который ссылается на другой проект java gradle, который строится как библиотека.

Моя конфигурация gradle выглядит нормально, так как я могу импортировать и использовать классы из другого проекта, иэто компилируется.Но когда я пытаюсь запустить приложение из командной строки, я получаю сообщение об ошибке ...

Исключение в потоке "main" java.lang.NoClassDefFoundError: dawcore / SamplerInstrument в DawCLI.main (DawCLI.java: 17) вызвано: java.lang.ClassNotFoundException: dawcore.SamplerInstrument на java.net.URLClassLoader.findClass (URLClassLoader.java:382) на java.lang.ClassLoader.loadClass (ClassLoader.java:424) на солнце..Launcher $ AppClassLoader.loadClass (Launcher.java:349) в java.lang.ClassLoader.loadClass (ClassLoader.java:357) ... еще 1

Похоже, что он можетне загружать классы в банку во время выполнения .... что имеет смысл.Но я не знаю, как заставить его успешно загрузить эти классы.

Моя текущая команда запуска, которая не ссылается на jar, выглядит следующим образом ...

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

Запуск этоговыдает первоначально упомянутую ошибку.

Затем я читаю документацию по аргументу java -cp.В нем говорится, что нужно предоставить дополнительные каталоги classpath, разделив их точкой с запятой.

Я впоследствии обновил свою команду 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 Ответ

0 голосов
/ 28 января 2019

Решение состояло в том, чтобы заменить точку с запятой вместо двоеточия.Даже если в первой строке команды javadocs on -cp указано, что вам следует использовать точку с запятой.

Это может быть связано с тем, что я работаю в Linux, а в этих документах указано Windows.

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

...