Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAR文件有时运行但不工作,或者根本不运行_Java_Eclipse_Jar - Fatal编程技术网

Java JAR文件有时运行但不工作,或者根本不运行

Java JAR文件有时运行但不工作,或者根本不运行,java,eclipse,jar,Java,Eclipse,Jar,我创建了一个GUI程序,它涉及在Eclipse中进行许多API调用。从Eclipse运行时工作完全正常,但是 我将程序导出为JAR文件,当我试图从终端或双击运行它时,它抛出一个NoClassDefFoundError。我确保所有的包都被选中了,并且选择了正确的主类,但仍然没有运气 我尝试将其导出为可运行的JAR文件,当我双击它时,它会运行并打开GUI,但无法按预期工作。但是,当我从终端运行它时,它按预期工作。我不知道为什么 我在终端中得到的JAR文件中的错误是: Error: A JNI err

我创建了一个GUI程序,它涉及在Eclipse中进行许多API调用。从Eclipse运行时工作完全正常,但是

我将程序导出为JAR文件,当我试图从终端或双击运行它时,它抛出一个NoClassDefFoundError。我确保所有的包都被选中了,并且选择了正确的主类,但仍然没有运气

我尝试将其导出为可运行的JAR文件,当我双击它时,它会运行并打开GUI,但无法按预期工作。但是,当我从终端运行它时,它按预期工作。我不知道为什么

我在终端中得到的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)
我真的不知道解决这个问题的方法,正如一些在线消息来源所说,要改变我机器上涉及管理员权限的东西,我没有管理员权限,因为我在公司的笔记本电脑上工作

对于可运行的JAR文件,我的GUI在第一次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运行时工作得非常好


我不确定如何解决这个问题,如果有人有任何想法,我将感谢您的帮助:

这个错误意味着org.apache http客户端库不在jar中。您可能在Eclipse项目中链接了它,但它没有导出到jar中

您必须创建可运行的jar fat jar 这是Eclipse指南:

从菜单栏的“文件”菜单中,选择“导出”。 展开Java节点并选择Runnable JAR文件。单击下一步。 在Runnable JAR文件规范页面中,选择 “Java应用程序”启动配置用于创建可运行的 罐子 在“导出目标”字段中,键入或单击“浏览到” 为JAR文件选择一个位置。 选择库处理策略: 将所需库打包到生成的JAR中


如果这没有帮助,请提供屏幕截图,如何从Eclipse导出这个jar,以及如何链接org.apacheHTTP客户端

我想出了一个快速解决办法。导出Runnable JAR后,创建一个快捷方式。在快捷方式上单击鼠标右键,然后选择“属性”。 在快捷方式选项卡下,查找目标并将其更改为C:\Program Files\Java\jdk1.8.0\U 192\bin\javaw.exe-jar C:\Users\{user}\Documents\Program.jar

因此,javaw.exe文件的位置,后跟-jar,然后是jar文件的位置


然后点击apply并关闭窗口。从那以后,我的程序就开始工作了。

没用了。我完全按照您所说的那样导出,但仍然不起作用,http请求只是返回null,并导致错误消息打印在我的GUI中。我不知道如何检查链接。我所知道的是,我在我的项目构建路径中添加了外部JAR,其中包含org.apache JAR?我猜您的应用程序可以在Java8上运行,但不能在以后的版本上运行。Java9引入模块项目Jigsaw