以java开头的Java类名

时间:2010-11-23 17:09:46

标签: java

我有一个我正在导入的java类,不幸名为java.net_y。我的代码编译,但当我尝试运行它时,我得到:

Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.net_y

我已经阅读了其他关于尝试覆盖核心java类的线程,比如java.io .....这不是我正在做的....这个外部类我的名字很糟糕。

另一个提到反思的线程......不确定是否需要反射。

我该怎么办?

4 个答案:

答案 0 :(得分:5)

  

我该怎么办?

重命名该课程。

答案 1 :(得分:2)

如果该类是从Web服务WSDL生成的,那么最好的方法是重新生成它并将包名强制转换为其他类。 大多数WSDL-to-java工具都有参数可以让你这样做。

答案 2 :(得分:0)

您可以使用Java Decompiler对要导入的内容进行反向工程,进行必要的更改,然后重新编译。

我实际上假设您正在尝试导入某种类型的.jar文件或类似的东西。如果您只导入一个类,那么您需要做的就是重命名它。

答案 3 :(得分:0)

我应该重命名你的班级。你不能把类放到java包中。参见

java.lang.ClassLoader#predefineClass()

这是一个执行以下检查的私有方法:

if ((name != null) && name.startsWith("java.")) {
    throw new SecurityException("Prohibited package name: " +
                name.substring(0, name.lastIndexOf('.')));
}

据我了解,这正是你看到的例外。

有时人们必须覆盖JDK中的类。这不是你的情况,但我想提一下以防万一。要做到这一点,你必须把这个重写的类放到

-Xbootclasspath

而非常规

-classpath

运行JVM时