Java 包路径不能以“开始”;爪哇语;在行动的配置中
有人能告诉我原因吗 您不应该将自己的类放入以Java 包路径不能以“开始”;爪哇语;在行动的配置中,java,struts2,web,Java,Struts2,Web,有人能告诉我原因吗 您不应该将自己的类放入以java.*开头的包结构中。我相信至少有一些安全管理人员阻止了这一点,但总的来说,这是一个非常糟糕的主意:java.*包中的类应该是JRE的一部分,而不是用户创建的 您得到的错误表明,可能正在使用的类加载器拒绝加载以java.开头的包中的CLASE,这基本上是相同情况的另一种表现形式 为什么要将类放在名为java的包中?(我假设您确实尝试过这样做。如果您只是随机决定将包名指定为java,而实际上没有声明该包的类,那么它当然会失败。) 举个例子,我试着运
java.*
开头的包结构中。我相信至少有一些安全管理人员阻止了这一点,但总的来说,这是一个非常糟糕的主意:java.*
包中的类应该是JRE的一部分,而不是用户创建的
您得到的错误表明,可能正在使用的类加载器拒绝加载以java.
开头的包中的CLASE,这基本上是相同情况的另一种表现形式
为什么要将类放在名为java
的包中?(我假设您确实尝试过这样做。如果您只是随机决定将包名指定为java
,而实际上没有声明该包的类,那么它当然会失败。)
举个例子,我试着运行这个程序:
Caused by: Action class [java.LoginAction] not found.
结果是出现以下错误:
package java;
public class Test {
public static void main(String[] args) {
System.out.println("Woot");
}
}
包(在
java.LoginAction
中
前面的部分)必须与LoginAction
类的包
声明匹配。查看文件LoginAction.java
顶部以package
开头的一行,您需要更改包名java
Struts2正在尝试从默认JRE的java
包加载LoginAction
类
package java;
public class Test {
public static void main(String[] args) {
System.out.println("Woot");
}
}
Exception in thread "main" java.lang.SecurityException: Prohibited package name:
java
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: java.Test. Program will exit.