<package name="default" extends="struts-default">
<action name="loginAction" class="java.LoginAction">
<result name="input">/login.jsp</result>
<result name="success">/success.jsp</result>
</action>
</package>
如果我使用从java.*开头的包路径来配置位置,则会导致错误.
堆栈是
Caused by: Action class [java.LoginAction] not found.
有人可以告诉我原因吗?
解决方法:
您不应该将自己的类放入以java.*开头的包结构中.我相信至少有一些安全管理器可以阻止这种情况,总的来说,这将是一个非常糟糕的主意:java.*包中的类应该是JRE的一部分,而不是用户创建的.
您收到的错误提示,可能是所使用的类加载器拒绝在Java开头的包中加载clase.基本上,这是同一件事的另一个体现.
您为什么要将类放在名为java的包中? (我假设您实际上已尝试这样做.如果您只是随机决定将包名称指定为java,而实际上没有一个声明该包的类,那么它当然会失败.)
仅作为示例,我尝试运行此程序:
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.