Я создал программу с графическим интерфейсом, которая включает в себя множество вызовов API в Eclipse. Работает совершенно нормально при запуске из Eclipse, НО ...
Я экспортировал свою программу в виде файла JAR, и когда я пытаюсь запустить ее из терминала или двойного щелчка, она выдает ошибку NoClassDefFoundError. Я удостоверился, что все пакеты были отобраны, и был выбран правильный Основной класс, все еще не удача.
Я попытался экспортировать его как файл JAR Runnable, и когда я дважды щелкаю по нему, он запускается и открывает графический интерфейс, но не работает, как предполагалось. Однако, когда я запускаю его из терминала, он работает как задумано. Понятия не имею, почему.
Ошибка из файла JAR, который я получаю в терминале:
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpUriRequest
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpUriRequest
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Не знаю, как на самом деле решить эту проблему, так как некоторые источники в Интернете говорят, что нужно изменить на моей машине то, что связано с доступом администратора, чего у меня нет, потому что я работаю на ноутбуке компании.
Для файла Runnable JAR мой графический интерфейс работает, как предполагалось, до первого запроса HttpRequest. Я должен запросить токен доступа для oAuth, но мой запрос не выполняется или что-то в этом роде, потому что я получаю нулевой возврат, для которого я проверяю.
Вот код, где это напечатано:
try {
HttpPost request = new HttpPost(url);
request.addHeader("Content-Type", "application/json");
StringEntity params;
params = new StringEntity("{\"grant_type\": \"authorization_code\","
+ "\"client_id\": \"\","
+ "\"client_secret\": \"\","
+ "\"code\": \"" + code + "\"," + "\"redirect_uri\": \"\"}");
request.setEntity(params);
String content = execute(request, client);
if (content != null) {
textArea.append("Response received\n\n");
} else {
textArea.append("An error occurred. No response received, please restart the process.");
return;
}
Для ясности, программа отлично работает при запуске из Eclipse.
Не совсем уверен, как это исправить, если у кого-то есть идеи, я был бы признателен за вашу помощь:)