データベース名からデータを取得しようとしました。ユーザー名はHello、パスワードはHelloのjaaneです。エラー:
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
は禁止されています。
編集:Java
またはjavax
で始まらない(ソース)ディレクトリにMain.Java
ファイルを移動し、ディレクトリ構造名を使用して変更しますコード内のパッケージ名。
Java.lang.SecurityException: Prohibited package name: Java
Javaをパッケージの名前として使用することはできません。別のものに置き換えてください。
データベース名を指定する必要があり、localhostの前にスラッシュが2つあります。こんにちはあなたのユーザー名で、こんにちはパスワードだと思います...
Connection connection = DriverManager.getConnection( "jdbc:derby://localhost:1527/DatabaseName","hello","Hello" );
...つまり、パッケージ名をJava以外に変更した後です。
見てください なぜ `Java.lang.SecurityException:禁止されたパッケージ名:Java`が必要ですか?
ユーザーコードは、クラスを標準のJava=パッケージの1つに入れることを決して許可されていません。このようにして、ユーザーコードは、Java実装。これらのパッケージプライベートオブジェクトの一部は、JVM内部へのアクセスを許可します(特に、SharedSecretsについて考えています)。
クラスを「Java」としてルートパッケージに保持したり、Javaで始まるパッケージを作成したりしないでください。 ...他の識別子をパッケージ名として使用できます。
プロジェクトがGradleによって初期化されている場合は、パッケージ名を指定してプロジェクトを変更することをお勧めします。そうすれば、問題を回避できます。
gradle init --type Java-application --test-framework junit --package packname