禁止包名:java

我试图从我的数据库名称获取数据为jaane,用户名为Hello和Password hello。 错误:

java.lang.SecurityException: Prohibited package name: java at java.lang.ClassLoader.preDefineClass(ClassLoader.java:480) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$000(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) Could not find the main class: java.Main. Program will exit. Exception in thread "main" Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds) 

我的代码是

 package java; import java.awt.Container; import java.sql.DriverManager; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * * @author ritesh */ public class Main extends JFrame{ public Main() throws SQLException {super("Database of Students"); try { Class.forName("org.apache.derby.jdbc.ClientDriver"); } catch (ClassNotFoundException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } Connection connection = DriverManager.getConnection( "jdbc:derby:/localhost:1527","hello","Hello" ); Statement statement = connection.createStatement(); // query database ResultSet resultSet = statement.executeQuery( "SELECT * FROM COLLEAGUES" ); StringBuffer results = new StringBuffer(); ResultSetMetaData metaData = resultSet.getMetaData(); int numberOfColumns = metaData.getColumnCount(); for ( int i = 1; i <= numberOfColumns; i++ ) { results.append( metaData.getColumnName( i ) + "\t" ); } results.append( "\n" ); while ( resultSet.next() ) { for ( int i = 1; i <= numberOfColumns; i++ ) { results.append( resultSet.getObject( i ) + "\t" ); } } // close statement and connection statement.close(); connection.close(); // set up GUI and display window JTextArea textArea = new JTextArea( "Hello"); Container container = getContentPane(); container.add( new JScrollPane( textArea ) ); setSize( 300, 100 ); // set window size setVisible( true ); // display window } /** * @param args the command line arguments */ public static void main(String[] args) { try { Main window = new Main(); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // TODO code application logic here } catch (SQLException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } } 

更改您的包裹名称。 java作为包名是被禁止的。

编辑 :将Main.java文件移动到不以javajavax开头的(源)目录中,并使用目录结构名称更改代码中的包名称。

 java.lang.SecurityException: Prohibited package name: java 

您不能使用java作为包的名称。 将其替换为其他内容。

您需要指定数据库名称,localhost之前有两个斜杠。 我假设你好是你的用户名和Hello密码……

 Connection connection = DriverManager.getConnection( "jdbc:derby://localhost:1527/DatabaseName","hello","Hello" ); 

…就是在你将包名改为java以外的东西之后!

看看为什么`java.lang.SecurityException:禁止包名:java`是必需的?

永远不允许用户代码将类放入其中一个标准Java包中。 这样,用户代码就无法访问Java实现中的任何包私有类/方法/字段。 其中一些包私有对象允许访问JVM内部。 (我特别想到SharedSecrets。)

永远不要将您的类作为“java”保留在根包中,或者永远不要创建以java开头的包。 …您可以使用任何其他标识符作为您的包名称。