Проблема при создании файла JAR с помощью командной строки - PullRequest
1 голос
/ 13 августа 2011

Я попытался создать файл JAR с помощью командной строки.

Файл My Manifest:

Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class:Home

Мои файлы и расположение этих файлов:

Расположение: D:\Application Файлы:

 images
     add.png
     home.png
     minus.png
 Database.java
 Home.java
 UiDesign.java
 Database.class
 Home.class// This is my main class
 UiDesign.class
 Manifest.txt
 mysql-connector-java-5.1.15-bin.jar

Чтобы создать файл JAR, я попытался:

D:\Application>jar cmf Manifest.txt MyApp.jar *.class mysql-connector-java-5.1.15-bin.jar images

Но файл JARсоздано.Если я щелкну этот файл jar, появится сообщение об ошибке, как показано ниже:

Не удалось загрузить атрибут манифеста основного класса из D: \ Application \ MyApp.jar

Спасибовсе .... Моя проблема решена путем добавления новой строки в файл манифеста .... Спасибо всем ...

Но теперь у меня есть другая проблема .....

D:\JavaApplication-13-8-2011\Application>jar cfm  MyApp.jar Manifest.txt *.class
 mysql-connector-java-5.1.15-bin.jar images

D:\JavaApplication-13-8-2011\Application>java -jar MyApp.jar
Connect to MySQl
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Database.getDBConnection(Database.java:14)
        at UiDesign.<init>(UiDesign.java:58)
        at Home.main(Home.java:6)
java.lang.NullPointerException
        at Database.getBrand(Database.java:31)
        at UiDesign.<init>(UiDesign.java:59)
        at Home.main(Home.java:6)
Exception in thread "main" java.lang.NullPointerException
        at UiDesign.<init>(UiDesign.java:64)
        at Home.main(Home.java:6)

D:\JavaApplication-13-8-2011\Application>

Я думаю, что эта проблема возникает из-за того, что путь к классу не установлен для MySQL-коннектора .... Я добавил этот файл jar в свое приложение ..... Как установить путь к классу и успешно запустить файл приложения jar .....

, пожалуйста, помогите мне ....

Спасибо ... Я решил ... эту проблему также ... Как сказал Тристан, я добавил classpath в файл манифеста ... Теперь мойФайл приложения Jar Выполнить успешно .....

Спасибо всем за быстрый ответ ......

Ответы [ 4 ]

2 голосов
/ 13 августа 2011

Добавьте символ новой строки в конце файла манифеста.

Предупреждение. Текстовый файл должен заканчиваться новой строкой или переводом каретки.Последняя строка не будет проанализирована должным образом, если она не заканчивается новой строкой или возвратом каретки.

From: http://download.oracle.com/javase/tutorial/deployment/jar/appman.html

1 голос
/ 13 августа 2011

Это может быть ошибка в classpath, потому что ваш jar зависит от mysql-connector-java-5.1.15-bin.jar

0 голосов
/ 13 августа 2011

Для вашей второй проблемы:

Ваша банка, вероятно, содержит копию MySQL банку.Это не работает, потому что банки должны содержать классы.Самый простой способ исправить это - указать в вашем манифесте , что ваш код зависит от mysql jar.В основном добавьте следующее:

Class-Path: mysql-connector-java-5.1.15-bin.jar

В вашей команде создания jar не включайте mysql jar.Наконец, убедитесь, что ваш jar и mysql один распределены вместе (в одном каталоге).

Если вы действительно хотите один jar, извлеките javascript и включите его содержимое в jar, который вы собираетесьраспространять.

0 голосов
/ 13 августа 2011

убедитесь, что в файле манифеста есть возврат каретки, и я также предполагаю, что имя вашего файла jar должно предшествовать файлу манифеста, поскольку ваш параметр говорит cfm.считает, что файл jar - это ваш файл манифеста.Это должно быть проблемой.

обновить аргумент или изменить параметр option на mcf, я думаю ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...