当前位置: 首页 > 知识库问答 >
问题:

.jar文件在IntelliJ中工作,但当.jar在IntelliJ之外运行时,会发生JVM错误

江衡
2023-03-14

我是Java和堆栈溢出的新手,我在IntelliJ中创建了一个Java项目,并通过构建工件和构建。jar文件创建了一个。jar文件,以便在不使用IntelliJ的情况下运行该项目。该程序使用一个机器人来打开运行窗口,通过按Windows和R键,移动鼠标到我的计算机的分辨率(1366 x 768)的盒子内部,单击,键入cmd并按回车,移动鼠标到cmd窗口内部,单击,键入whoami并按回车。这在IntelliJ内部完全正常,但在它之外,我得到了这个错误:

Java虚拟机启动器错误:发生JNI错误,请检查安装后再试。

当我单击确定时,另一个文本框将打开:

Java虚拟机启动程序发生Java异常。

import java.awt.AWTException;
import java.awt.event.KeyEvent;
import java.awt.Robot;
import java.awt.event.InputEvent;

public class RobotTest {
    public static void main(String[] args) throws Exception {
        Robot r = new Robot();
        while (true) {
            r.keyPress(KeyEvent.VK_WINDOWS);
            r.keyPress(KeyEvent.VK_R);
            r.keyRelease(KeyEvent.VK_WINDOWS);
            r.mouseMove(300,620);
            r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            Thread.sleep(100);
            r.keyPress(KeyEvent.VK_C);
            r.keyPress(KeyEvent.VK_M);
            r.keyPress(KeyEvent.VK_D);
            r.keyPress(KeyEvent.VK_ENTER);
            Thread.sleep(150);
            r.mouseMove(400,200);
            r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            r.keyPress(KeyEvent.VK_W);
            r.keyPress(KeyEvent.VK_H);
            r.keyPress(KeyEvent.VK_O);
            r.keyPress(KeyEvent.VK_A);
            r.keyPress(KeyEvent.VK_M);
            r.keyPress(KeyEvent.VK_I);
            r.keyPress(KeyEvent.VK_W);
            r.keyPress(KeyEvent.VK_ENTER);
            r.mouseMove(400, 200);
            Thread.sleep(20000);
        }
    }
}

我的java是最新的,IntelliJ也是最新的,我看不出我做错了什么。

共有1个答案

范浩荡
2023-03-14

假设完全错误如下所示:

错误:出现JNI错误,请检查安装并重试。线程“main”Java.lang.unsupportedClassVersionerror:Robot/RobotTest已由最新版本的Java运行时(类文件版本55.0)编译,此版本的Java运行时只识别类文件版本高达52.0

我想说您的系统中可能有冲突的JDK/JRE安装。正如错误所述,.jar是由Java运行时的最新版本(IntelliJ IDEA使用的版本)编译的,而您现在使用的是旧版本。

    null
java -version
javac -version
  • 如果它们不同,请卸载旧环境并重新运行JAR。

在我的例子中,java是版本1.8,而javac是版本12。我从系统中卸载了1.8JRE,确保java-version也给出了12,并成功地从cmd重新读取java-jar路径\to\artifact.jar

 类似资料:
  • 我使用kotlin中的EclipsePAHOMQTT库和IntellijIDE中的Gradle创建了一个小型mqtt应用程序。当通过Intellij运行它时,它运行良好,但是当我构建它并运行创建的jar文件时,我会得到一个错误。 从我看到的其他问题来看,这似乎与类路径有关,但我不确定如果这确实是问题所在,需要做什么,因为我使用的是gradle而不是jar文件作为库。 我正在学习这个教程 这是我的档

  • 我的Intellij项目在IDE中完美地运行,但任何试图提取有效数据的方法。来自它的jar文件导致了某种错误。我的项目使用Maven、Spring和Apache Ignite。这是我的pom。xml文件: 清单: 并且,文件夹结构: 我列出了以下尝试: 1-在pom中运行mvn clean install。xml目录:编译得很好,但我得到的错误是相对于jar文件没有主清单属性。 2-我打开jar文

  • 我在Grizzly服务器上为Jersey应用程序运行以下简单示例: 当我从IntelliJ运行它时,一切都按照预期工作。 已连接到目标VM,地址:“127.0.0.1:61163”,传输:“Socket”2016年12月30日4:00:07PM com.sun.jersey.api.core.PackagesResourceConfig init信息:在包中扫描根资源和提供程序类:Applicat

  • 我如何在IntelliJ IDEA中向一个项目添加一个外部库,这样当我构建一个工件时,它仍然可以访问库中的类呢? 我从Project Structure创建了一个新的Jar工件,然后将外部Jar添加到库中,然后在Modules列表中检查它,最后将它添加到工件的输出中。这些都没用。当我构建并尝试运行应用程序时,它会抛出一个错误:

  • 有人能告诉我如何用Intellij和Gradle在cmd中运行.jar文件吗? 我尝试创建清单文件,但出现错误: 或 我的主要类:

  • 问题内容: 我记得前一段时间使用eclipse或netbeans时,我能够轻松地将源文件包含在jar文件中。我已移至intellij 10社区版,发现自己需要做同样的事情。有什么提示吗? 问题答案: 我想到了… 单击“输出布局”选项卡中的“ +”按钮->包含目录内容->选择您的src目录。做到了