1

I am making a multiple choice quiz that makes use of the sqlite-jdbc-3.21.0.jar driver. You can find it here: https://bitbucket.org/xerial/sqlite-jdbc/downloads/

I've made a class called Database to handle everything relating to SQLite:

   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;
    }
}

When i run my quiz in Eclipse it doesn't give any errors. When i compile it it doesn't give any errors (packaged required libraries). As soon as i launch the jar file in commandprompt i get the message: Prohibited package name: java.sql. That would be: java.lang.SecurityException: Prohibited package name: java.sql

This is the stacktrace of the connect() error:

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)

What i tried: Changing the package name. Changing the sequence of my buildpath. Tried several placings of where i put the driver jar in my source folder. Signing my exported jar. Added the jar to my classpathvariables: database connection not working in jar, but does work in eclipse

Now i'm a beginning Java programmer, i might have done something wrong from the above list. But i'm hoping someone can shed light on what is actually causing this error to happen.

Quadrivics
  • 181
  • 2
  • 10

1 Answers1

0

This seems like a repeat of Prohibited package name: java, but you said you changed your package name.

If you didn't change the package name from java to something else, try changing that. Else, delete your jar file and rebuild.

  • 1
    I would suggest you also delete all the compiled .class files, i.e. the bin or target folder. – Jonathan Rosenne Feb 27 '18 at 16:05
  • I've rebuild my entire project multiple times in different workspaces and new projects and that doesn't solve the problem either. I've checked out the link and that refers to something i've tried already aswell. – Quadrivics Feb 27 '18 at 16:51