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.