【问题标题】:Intellij Java: java.lang.NoClassDefFoundError: org/json/JSONExceptionIntellij Java:java.lang.NoClassDefFoundError:org/json/JSONException
【发布时间】:2019-05-29 02:51:32
【问题描述】:

我需要帮助。我花了几个小时试图解决这个问题,但我做不到。我在 Intellij Community Edition 2018.2 OS Windows 10 上编码,这是我的 java 项目结构。

我的 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();
        }
    }
}

我的 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>

我配置了File -> Project Structure -> Artifacts,并添加了libs/java-json.jar。

最后,在 Intellij 上,我点击了 Build -> Build Artifacts ->replicator.jar -> Build。我的可执行jar就创建成功了。

但是当我尝试运行它时,会发生错误。这是屏幕截图。

请帮忙.. 我知道这个问题已经在这里回答了:Java: NoClassDefFoundError: org/json/JSONException 但该解决方案无法解决我的问题。也许这是来自 intellij 的错误?

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

我的最后更新: 我尝试了几个小时,直到我放弃。目前,在 Windows 10 中从 java 项目创建可执行应用程序的唯一可能方法是不使用 Intellij CE 2018.2。我尝试了 NetBeans 8.2 IDE,并成功创建了带有 gradle 插件和 cygwin 的可执行 bat。

我不会回答这个问题,因为我知道有一天有人会有办法,但现在我放弃并尝试了不同的 IDE,至少在创建可执行文件方面。

【问题讨论】:

  • 您使用的外部 jar,尚未附加到您创建的 jar。
  • 感谢您的帮助。我怎样才能附上它?
  • 在您的 pom 文件中添加外部 jar 作为依赖项
  • 你是如何创建可执行 JAR 的?您是否使用 Maven 打包 JAR? pom.xml 中是否提到了这种依赖关系?
  • @Dika 你从哪里得到json-jar?可以解压看看有没有org.json.JSONException

标签: java intellij-idea noclassdeffounderror executable-jar


【解决方案1】:

我遇到了同样的问题。花了几个小时后,我找到了解决此问题的解决方案。 我需要做的是:

转到:文件 -> 项目结构 -> 库 在库中添加“org.springframework.boot:spring-boot-configuration-processor:2.3.4.RELEASE”。

现在清理、构建并运行项目

注意:您可以更改以上包的版本

【讨论】:

    【解决方案2】:

    将 jar 文件放在 lib 文件夹下,因为在运行时它无法识别您的 jar,我认为是这样。

    【讨论】:

      【解决方案3】:

      打开您的replicator.jar(可以使用WinRAR),查看jar 中的JSONException 类是否可用。如果不是,您需要将其包含在您的 jar 中。为此,您可以使用 maven shade(https://maven.apache.org/plugins/maven-shade-plugin/) 插件或 assemble 插件(http://maven.apache.org/plugins/maven-assembly-plugin/) 将所有依赖类包含到可执行 jar 中。

      这篇文章对你有帮助 Including dependencies in a jar with Maven

      【讨论】:

      • 感谢您提供的信息。请查看我更新的问题。仅供参考,包含依赖项 jar,但不知何故未加载到主应用程序中。也许它可以使用像 one-jar 这样的工具来工作,但现在我没有时间进行实验
      【解决方案4】:

      为了解决这个问题,我做了什么:

      删除一些 IDE 文件/文件夹

      我删除了.idea 文件夹和包含项目名称的.iml 文件。 Files and folder to delete

      重置 Intellij Cash 并重启 Intellij

      重新加载 Maven 项目

      Reload maven project

      我如何解决我的大部分 Intellij IDEA 问题

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多