Файл .jar работает в IntelliJ, но ошибка JVM возникает, когда .jar запускается вне IntelliJ - PullRequest
0 голосов
/ 21 января 2020

Я новичок в Java и переполнении стека, и я создал проект Java в IntelliJ и создал файл .jar для его запуска без IntelliJ, создавая артефакты и создавая файл .jar. Программа использует робота для открытия окна «Выполнить» нажатием клавиш Windows и R, перемещает мышь внутрь окна для разрешения моего компьютера (1366 x 768), щелкает, вводит cmd и нажимает ввод, перемещает мышь внутри окна cmd щелкает и вводит whoami и нажатия. Это прекрасно работает внутри IntelliJ, но за его пределами я получаю эту ошибку:

Java Ошибка запуска виртуальной машины: произошла ошибка JNI, проверьте вашу установку и повторите попытку.

Когда я нажимаю ОК, открывается другое текстовое поле:

Java Средство запуска виртуальной машины A 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);
        }
    }
}

The Thread.sleep (20000); в конце кода есть, чтобы предотвратить его бесконечное l oop, что позволяет мне остановить программу.

Мой java обновлен, как и IntelliJ, и я не вижу, что я делаю не так.

1 Ответ

0 голосов
/ 21 января 2020

Предполагается, что полная ошибка выглядит примерно так:

Ошибка: произошла ошибка JNI, проверьте вашу установку и повторите попытку. Исключение в потоке "main" java .lang.UnsupportedClassVersionError: robot / RobotTest был скомпилирован более поздней версией Java Runtime (версия файла класса 55.0), эта версия Java Runtime распознает только версии файла класса до 52.0

I ' Я бы сказал, что в вашей системе могут быть конфликтующие установки JDK / JRE. Как говорится в сообщении об ошибке, файл .jar был скомпилирован более поздней версией среды выполнения Java (используемой IntelliJ IDEA), а используемая вами сейчас - более старой версии.

  • Проверьте, какая версия JDK используется для запуска вашего проекта в IntelliJ IDEA ( Файл | Структура проекта | Project SDK ). В моем случае JDK 12.
  • В командной строке выполните следующее:
java -version
javac -version
  • Если они отличаются, удалите старую среду и перезапустите JAR.

В моем случае java была версией 1.8, тогда как javac была версией 12. Я удалил 1.8 JRE из моей системы, убедился, что java -version дал мне также 12 и и снова java -jar path\to\artifact.jar из cmd успешно.

...