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

Java-执行jar失败,因为被禁止的包名:Java.sql

方权
2023-03-14

我正在做一个利用sqlite-jdbc-3.21.0.jar驱动程序的多项选择测验。您可以在这里找到它:https://bitbucket.org/xerial/sqlite-jdbc/downloads/

   package quizpack;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;

    public class Database {
    Console cnsl = new Console();
    ResultSet rs = null;
    Connection connection = null;
    Statement stmt = null;

    public Connection connect() {
        try {
            connection = DriverManager.getConnection("jdbc:sqlite:./data/data.db");
            Class.forName("org.sqlite.JDBC");
        } catch (Exception e) {
            cnsl.println("connect() error: " + e.getMessage());
        }
        return connection;
    }
}

当我在Eclipse中运行测试时,它不会给出任何错误。当我编译它时,它不会给出任何错误(打包所需的库)。当我在commandprompt中启动jar文件时,我得到的消息是:禁止的包名称:java.sql。这将是:java.lang.SecurityException:禁止的包名称:java.sql

这是connect()错误的stacktrace:

connect() error: Prohibited package name: java.sql
java.lang.SecurityException: Prohibited package name: java.sql
    at java.base/java.lang.ClassLoader.preDefineClass(Unknown Source)
    at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
    at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)

    at java.base/java.net.URLClassLoader.defineClass(Unknown Source)
    at java.base/java.net.URLClassLoader.access$100(Unknown Source)
    at java.base/java.net.URLClassLoader$1.run(Unknown Source)
    at java.base/java.net.URLClassLoader$1.run(Unknown Source)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at quiz.Database.connect(Database.java:21)
    at quiz.Database.buildQuery(Database.java:51)
    at quiz.Quiz.<init>(Quiz.java:22)
    at quiz.Main.main(Main.java:13)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nativ
e Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknow
n Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Un
known Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)

我尝试的是:更改包名。更改我的构建路径的顺序。试着把驱动程序jar放入源代码文件夹的位置放了几个地方。在我导出的JAR上签名。将jar添加到我的classpathVariables:数据库连接在jar中不工作,但在eclipse中工作

现在我是一个刚开始的Java程序员,从上面的列表中我可能做错了什么。但我希望有人能解释一下到底是什么导致了这个错误的发生。

共有1个答案

况谦
2023-03-14

这看起来像是重复了被禁止的包名:java,但您说您更改了包名。

如果您没有将包名从java更改为其他名称,请尝试更改。否则,删除您的jar文件并重新构建。

 类似资料:
  • 我从eclipse编译了jar文件(package required lib...),然后当我运行它时,它给我SecurityException:禁止的包名称:java.sql,当我在eclipse中运行代码时,这不会发生。 我看到很多人指出将其中一个包命名为“java.*”可能会导致问题,但我仔细检查了一下,没有一个包命名为“java.{somthing}”。 以下是完整的错误跟踪: 操作系统:

  • 我曾经能够从perl脚本(请求中提供身份验证)或互联网浏览器(会出现身份验证弹出窗口)使用IBMSBT getContact API,它将以JSON格式返回数据IBMConnections Developers API参考页面: http://www-10.lotus.com/ldd/appdevwiki.nsf/xpAPIViewer.xsp?lookupName=API参考文件 然而,最近AP

  • 问题内容: 我创建了一个类“ String”,并将其放置在“ java”包中[实际上,我想创建 java.lang 以查看classLoader将哪个类加载为 一旦将一个类加载到JVM中,就不会再次加载相同的类(我再说一遍,相同的类) 引用于oreilly]。但是后来那件事,为什么在运行此类时我得到 java.lang.SecurityException:禁止的包名称: java 出于安全原因,j

  • 我在Eclipse IDE中使用Java编写了一个简单的Selenium+TestNG maven项目(例如,在目录中),当我右键单击该项目并运行文件以启动Chrome浏览器时,我现在将该项目导出为“可运行JAR文件”并将JAR保存在桌面()。 现在, 如果我从项目目录中运行保存的可执行jar,并双击该jar,就能够启动Chrome浏览器,即,但是 如果我从desktop保存可执行jar,无法启动

  • 无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:在项目gameoflife上编译(default-compile)-core:编译失败[错误]此环境中未提供编译器。也许您运行的是JRE而不是JDK? 我已经在我的机器上安装了Java,但仍然面临这个问题。 我在做EC2。

  • 在应用程序build.graddle文件中,但它也不起作用。 谢谢你的帮助。