запуск банку из командного файла в Java - PullRequest
1 голос
/ 07 июня 2011

У меня проблема с запуском основного класса из банки.

Сценарий Ant создал следующие папки:

MyProject(Somewhere in C:)
 |
 |
 |____configuration(this contains properties/XML file)
 |
 |____dist(contains MyProject.jar)
 |
 |____lib(contains all other jars)
 |
 |____run(contains batch file to run MyProject.jar)

Внутри папки запуска у меня есть командный файл, который выглядит так:

java -jar ../dist/MyProject.jar;../lib/*.jar com.my.test.MainTest

Может ли кто-нибудь направить меня. Я просто хочу запустить папку и дважды щелкнуть файл .bat и запустить приложение.

Я получаю

Exception in thread "main" java.lang.NoClassDefFoundError: MyProject/jar

Обновление

Новая ошибка:

The java class is not found:  com.microsoft.sqlserver.jdbc.SQLServerException

Спасибо ...

Ответы [ 3 ]

6 голосов
/ 07 июня 2011

Похоже, вы передаете несколько файлов JAR в панель запуска Java .Это не так.

Вам нужно передать отдельный файл jar (в нашем случае MyProject.jar), который служит точкой входа.Все связанные JAR-файлы должны быть указаны в записях ClassPath манифеста MANIFEST.MF основного фляги.В манифесте также должен быть указан класс Main - класс, имеющий метод main ().

Если вы хотите избежать вышеизложенного и указать полный путь к классу в командной строке, используйте -cp или -classpath флаг.Однако вам нужно указать подстановочные знаки на пути к классам, способом, отличным от того, который указан в вопросе.Следующее может работать;в Windows оберните записи пути к классам в кавычки, если необходимо:

REM notice the quotes in the cp argument. Those are to be omitted in *nix
java -cp "../dist/MyProject.jar;../lib/*" com.my.test.MainTest

Обновление

На основании нового сообщения об ошибке, о котором теперь сообщается, создается впечатление, что Драйвер JDBC для Microsoft SQL Server отсутствует в пути к классам.Это потребует загрузки и размещения необходимых файлов JAR (в каталоге lib).Если драйвер присутствует в другом месте, то приведенная выше команда, используемая для запуска приложения, должна быть обновлена ​​с указанием местоположения JAR.

2 голосов
/ 07 июня 2011
  1. Используйте -cp, чтобы указать путь к классу
  2. Удалите расширение .jar для подстановочного знака

Ваша результирующая команда будет:

    java -cp ..\dist\MyProject.jar;..\lib\* com.my.test.MainTest

Смежный вопрос с просвещающими ответами.

2 голосов
/ 07 июня 2011

Используйте -cp (или -classpath) вместо -jar:

java -cp ../dist/MyProject.jar;../lib/*.jar com.my.test.MainTest

Опция -jar используется для запуска файла .jar, который требует, чтобы файл .jar содержал манифест, указывающий, какой класс выполнять. Но здесь вы этого не хотите, потому что вы уже предоставляете класс для запуска (com.my.test.MainTest).

Обновление:

Как упоминает @Rob, способ использования подстановочных знаков в classpath - это просто '*', а не '* .jar', так что вы действительно хотите:

java -cp ../dist/MyProject.jar;../lib/* com.my.test.MainTest
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...