Intellij Java: java.lang.NoClassDefFoundError: org / json / JSONException - PullRequest
0 голосов
/ 02 января 2019

Мне нужна помощь.Я потратил несколько часов, пытаясь решить эту проблему, но не могу.Я пишу код на Intellij Community Edition 2018.2 с ОС Windows 10, вот моя структура проекта Java.

enter image description here

мой источник Main.java:

package id.simko;

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello World!");

        SqlServerConn sqlServerConn = new SqlServerConn();
        sqlServerConn.connectDbSqlServer();
        sqlServerConn.selectSqlServer();
    }
}

SqlServerConn.java:

package id.simko;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.sql.*;

class SqlServerConn {
    private Connection conn;

    void connectDbSqlServer() {

        String db_connect_string = "jdbc:sqlserver://localhost";
        String db_name = "db1";
        String db_userid = "sa";
        String db_password = "sa";

        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            conn = DriverManager.getConnection(db_connect_string+";databaseName="+db_name,
                    db_userid, db_password);
            System.out.println("connected to sql server");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    void selectSqlServer(){
        Statement statement;
        try {
            // ... skipped for clarity
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

my MANIFEST.MF:

Manifest-Version: 1.0
Main-Class: id.simko.Main

Мой pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>id.simko</groupId>
    <artifactId>replicator</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>7.0.0.jre8</version>
        </dependency>
    </dependencies>

</project>

Я настроил Файл ->Структура проекта -> Артефакты и добавленные libs / java-json.jar.

enter image description here

Затем, наконец, в Intellij я нажал Build -> Build Artifacts -> replicator.jar -> Сборка.И мой исполняемый файл jar был успешно создан.

Но когда я попытался запустить его, произошла ошибка.вот скриншот.

enter image description here

, пожалуйста, помогите .. Я знаю, что этот вопрос уже здесь ответил: Java: NoClassDefFoundError: org / json / JSONException но решение не может решить мою проблему.может быть, это ошибка от Intellij?

===================================================================

ПОСЛЕДНЕЕ ОБНОВЛЕНИЕ ОТ МЕНЯ: я пытался часами, пока не дамвверх.На данный момент единственный возможный способ создания исполняемого приложения из Java-проекта в Windows 10 - это НЕ использовать Intellij CE 2018.2.Я попробовал IDE NetBeans 8.2 и успешно создал исполняемый файл bat с плагином gradle и cygwin.

Я оставлю этот вопрос без ответа, потому что знаю, что когда-нибудь у кого-то будет выход, но сейчас я сдаюсь и попробовал другойIDE, хотя бы для создания исполняемого файла.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Откройте ваш replicator.jar (можно использовать WinRAR) и посмотрите, доступен ли класс JSONException внутри банки. Если нет, вам нужно включить это в банку. Для этого вы можете использовать maven shade (https://maven.apache.org/plugins/maven-shade-plugin/) плагин или сборочный плагин (http://maven.apache.org/plugins/maven-assembly-plugin/)), чтобы включить все зависимые классы в ваш исполняемый файл jar.

Этот пост поможет вам Включая зависимости в банке с Maven

0 голосов
/ 02 января 2019

Поместите файл jar в папку lib, потому что во время выполнения он не может определить ваш jar, я так думаю ..

...