- Использование IntelliJ 12.0.4 Community Edition.
- Я создал приложение консоли Java под названием DB с основным именем класса DB.
- Я упаковал его в исполняемый файл jar под названием DB.jar.
- В этом приложении я подключаюсь к Oracle DB с помощью JDBC.
Я упаковываю необходимый JDBC опарник в DB.jar через IntelliJ в проекте структуры (модули, библиотека)Получение ClassNotFound Исключение при выполнении jar
Когда я исполняю приложение изнутри IntelliJ он работает успешно
- Если скопировать БД .jar в какой-то каталог и выполнить его через «java -jar DB.jar». Я получаю исключение ClassNotFound в oracle.jdbc.driver.OracleDriver
- Я посмотрел в DB.jar и jarb jar-файлах (ojdbc6.jar, ojdbc14 .jar) находятся в DB.jar
- Любые мысли?
ответ
Банки в исполняемом банке обычно не находятся на пути к классам.
Вы можете поместить их в ту же папку, DB.jar и сделать:
java -cp DB.jar;ojdbc6.jar;ojdbc14.jar <MainClass goes here>
и что должны запустить его.
Вы также можете поместить запись Class-Path
в файл Manifest.MF внутри своей банки, чтобы ссылаться на другие банки относительно местоположения DB.jar в файловой системе компьютера. Ссылка на два других файла jar, а затем вы можете сделать java -jar DB.jar <MainClass goes here>
(при условии, что две банки находятся в нужном месте.
Существует некоторое обсуждение here об общем разочаровании в том, что вы не можете делать то, что хотите (и что многие другие хотели в течение многих лет).
Classpath including JAR within a JAR
Объяснит о главном классе
При запуске приложения Java из командной строки, есть некоторый класс, где исполнение звезда ц. Это будет выглядеть примерно так:
package com.mycompany.app;
public class StartHere {
public static void main(String[] args) {
// Your code goes here ...
}
}
Если этот пример был класс, где ваше приложение начинает вы будете использовать командную строку, чтобы это запустить его. Это предполагает, что вы имеете класс StartHere в нужном месте пакета в банку на пути к классам:
java -cp DB.jar;ojdbc6.jar;ojdbc14.jar com.mycompany.app.StartHere
Обратите внимание, что это позволяет иметь несколько приложений в одном банке. Просто создайте несколько классов с помощью метода main()
и запустите их с разными начальными классами, указанными в командной строке.
- 1. Получение ClassNotFound Исключение при выполнении сценария оболочки
- 2. получение ClassNotFound исключение при развертывании на ухо WebLogic
- 3. Получение ClassNotFound Исключение для класса MkActivityMethod
- 4. Исключение ClassNotFound при использовании admob jar в моем проекте андроида?
- 5. Исключение класса ClassNotFound при извлечении класса из jar
- 6. Ошибка при выполнении JAR-файла
- 7. Classnotfound for jar
- 8. ClassNotFound Исключение при вызове апплета
- 9. ClassNotFound Исключение для Jumblr
- 10. Appium: Получение исключение при выполнении тестов
- 11. Classnotfound Exception при встраивании jar с HTML
- 12. Ошибка выполнения: исключение ClassNotFound
- 13. Spring: ClassNotFound исключение
- 14. Исключение Tomcat ClassNotFound при попытке запустить приложение
- 15. ClassNotFound из общей библиотеки jar
- 16. Исключение отстройки при выполнении
- 17. Исключение при выполнении запроса
- 18. Ошибка при выполнении файлов jar
- 19. Ошибка при выполнении файла jar
- 20. Ошибка Java при выполнении jar
- 21. IIOException при выполнении файла jar
- 22. Исключение ClassNotFound в команде java
- 23. Исключение ClassNotFound после добавления внешней банки
- 24. Исключение класса ClassNotFound в статье catch
- 25. Ошибка при запуске Java-программы Полученное исключение ClassNotFound
- 26. Класс аннотации вызывает исключение ClassNotFound
- 27. Получение исключения ClassNotFound: при сбрасывании конфигурации в Hadoop
- 28. Получение ошибки при выполнении
- 29. Получение ошибки при выполнении
- 30. Jboss deployment BindException и исключение ClassNotFound
Нужно ли мне явно указывать путь к classpath? Похоже, в этом смысл положить их в банку. – BobL
Да. Это проблема не в этом. –
Спасибо, я попробую. Так собирает ли банки в мою банку что-нибудь купить? – BobL