java.lang.SecurityException:禁止的包名:java.lang
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3491187/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
java.lang.SecurityException: Prohibited package name: java.lang
提问by ahmedmzl
I'm getting the following error when trying to build my very simple webservice project. I've given the build.xml, my java file and path values
尝试构建我的非常简单的 Web 服务项目时出现以下错误。我已经给出了 build.xml、我的 java 文件和路径值
The class file is getting generated, but service is not getting generated.
正在生成类文件,但未生成服务。
Please help... It's bugging for a looooong time..
请帮助...它的窃听了looooong时间..
Thanks! :)
谢谢!:)
CLASSPATH=C:\bea\weblogic81\server\lib\weblogic.jar;C:\bea\weblogic81\server\lib \webservices.jar;C:\bea\weblogic81\server\lib\ojdbc14.jar;C:\j2sdk1.4.2_18\jre\l ib\rt.jar;c:\ant\apache-ant-1.5.4\lib\ant.jar;c:\ant\apache-ant-1.5.4\lib\option al.jar;
Path=C:\Program Files\Reflection;C:\oracle\ora92\bin;C:\Program Files\Oracle\jre \1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\WINDOWS\system32;C:\WINDOWS; C:\WINDOWS\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Program Files\Windows Im aging\;C:\j2sdk1.4.2_18\bin;c:\j2sdk1.4.2_18\bin;c:\ant\apache-ant-1.5.4\bin; PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
CLASSPATH=C:\bea\weblogic81\server\lib\weblogic.jar;C:\bea\weblogic81\server\lib\webservices.jar;C:\bea\weblogic81\server\lib\ojdbc14.jar;C:\ j2sdk1.4.2_18\jre\l ib\rt.jar;c:\ant\apache-ant-1.5.4\lib\ant.jar;c:\ant\apache-ant-1.5.4\lib\option al 。罐;
路径=C:\Program Files\Reflection;C:\oracle\ora92\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin ;C:\WINDOWS\system32;C:\WINDOWS; C:\WINDOWS\System32\Wbem;C:\Program Files\Intel\DMIX;C:\Program Files\Windows Imaging\;C:\j2sdk1.4.2_18\bin;c:\j2sdk1.4.2_18\bin; c:\ant\apache-ant-1.5.4\bin; PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
UserModel.java
用户模型.java
import java.sql.*;
import java.util.*;
public class UserModel
{
Connection con=null;
Statement st=null;
Statement st1=null;
ResultSet rs=null;
String nm,age,course,address,mob,IdNum1;
int IdNum,id;
int x;
int check=0;
ArrayList list=new ArrayList();
ArrayList eptylist=new ArrayList();
UserModel()
{
}
public int insert(String name,String age,String course,String address,int Mob) throws SQLException, ClassNotFoundException
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.142.22:40401:MKTMRM9","mrm2","Marms*123.");
st=con.createStatement();
x= st.executeUpdate("insert into student values(seqno.nextval,'"+name+"','"+age+"','"+course+"','"+address+"','"+Mob+"')");
if(x==1)
{
st1=con.createStatement();
rs=st.executeQuery("select seqno.currval from student");
while(rs.next())
{
IdNum=rs.getInt(1);
}
return IdNum;
}
else
return 0;
}
public ArrayList getDetails(int id1) throws SQLException, ClassNotFoundException
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@192.168.142.22:40401:MKTMRM9","mrm2","Marms*123.");
st=con.createStatement();
rs=st.executeQuery("select * from student where StudentId="+id1);
while(rs.next())
{
check++;
id=rs.getInt(1);
nm=rs.getString(2);
age=rs.getString(3);
course=rs.getString(4);
address=rs.getString(5);
mob=rs.getString(6);
}
list.add(new Integer(id));
list.add(nm);
list.add(age);
list.add(course);
list.add(address);
list.add(mob);
if(check!=0)
return list;
else
return eptylist;
}
}
build.xml
构建文件
<?xml version="1.0"?>
<project name="WebServiceServer" default="create" basedir=".">
<taskdef name="servicegen" classname="weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask"/>
<property name="src" value=".\src"/>
<property name="build" value=".\build"/>
<property name="namespace" value="http://localhost:7001/UserModel"/>
<target name="create">
<javac srcdir="${src}" destdir="${build}" includes="**/*.java">
</javac>
<servicegen
destEar="myWebServer.ear"
warName="mywebserver.war"
contextURI="WebServiceServer">
<service
javaClassComponents="UserModel"
targetNamespace="${namespace}"
serviceName="UserModel"
serviceURI="/UserModel"
generateTypes="True"
expandMethods="True"
style="rpc">
</service>
<classpath>
<pathelement path="${build}"/>
<pathelement path="${java.class.path}"/>
<pathelement path="{lib}/ojdbc14.jar"/>
</classpath>
</servicegen>
</target>
</project>
error from console - while ant is run
来自控制台的错误 - 运行 ant 时
Buildfile: build.xml
create:
[javac] Compiling 1 source file to C:\Documents and Settings4756\New\MyWe
b\WebServiceServer\build
[servicegen] Generating service "UserModel" ...
[servicegen] java.lang.SecurityException: Prohibited package name: java.lang
[servicegen] at java.lang.ClassLoader.defineClass(ClassLoader.java:524)
[servicegen] at java.security.SecureClassLoader.defineClass(SecureClassLoader
.java:123)
[servicegen] at weblogic.utils.classloaders.GenericClassLoader.findLocalClass
(GenericClassLoader.java:476)
[servicegen] at weblogic.utils.classloaders.GenericClassLoader.findClass(Gene
ricClassLoader.java:181)
[servicegen] at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
[servicegen] at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
[servicegen] at weblogic.utils.classloaders.GenericClassLoader.loadClass(Gene
ricClassLoader.java:223)
[servicegen] at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
[servicegen] at java.lang.Class.forName0(Native Method)
[servicegen] at java.lang.Class.forName(Class.java:219)
[servicegen] at weblogic.xml.schema.binding.internal.codegen.Compiler.loadCla
ss(Compiler.java:641)
[servicegen] at weblogic.xml.schema.binding.internal.codegen.Compiler.addToMa
pping(Compiler.java:450)
[servicegen] at weblogic.xml.schema.binding.internal.codegen.Compiler.compile
(Compiler.java:175)
[servicegen] at weblogic.xml.schema.binding.internal.XSDTypeMappingBuilder.ma
pClass(XSDTypeMappingBuilder.java:89)
[servicegen] at weblogic.xml.schema.binding.internal.XSDTypeMappingBuilder.ma
pClass(XSDTypeMappingBuilder.java:102)
[servicegen] at weblogic.xml.schema.binding.internal.TypeMappingBuilderBase.a
ddMapping(TypeMappingBuilderBase.java:180)
[servicegen] at weblogic.ant.taskdefs.webservices.autotype.ComponentAutoTyper
.addMapping(ComponentAutoTyper.java:88)
[servicegen] at weblogic.ant.taskdefs.webservices.autotype.ComponentAutoTyper
.mapComponent(ComponentAutoTyper.java:141)
[servicegen] at weblogic.ant.taskdefs.webservices.autotype.JavaAutoTyper.run(
JavaAutoTyper.java:81)
[servicegen] at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.r
unAutoTyper(ServiceGenTask.java:367)
[servicegen] at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.g
enerateService(ServiceGenTask.java:313)
[servicegen] at weblogic.ant.taskdefs.webservices.servicegen.ServiceGenTask.e
xecute(ServiceGenTask.java:181)
[servicegen] at org.apache.tools.ant.Task.perform(Task.java:341)
[servicegen] at org.apache.tools.ant.Target.execute(Target.java:309)
[servicegen] at org.apache.tools.ant.Target.performTasks(Target.java:336)
[servicegen] at org.apache.tools.ant.Project.executeTarget(Project.java:1339)
[servicegen] at org.apache.tools.ant.Project.executeTargets(Project.java:1255
)
[servicegen] at org.apache.tools.ant.Main.runBuild(Main.java:609)
[servicegen] at org.apache.tools.ant.Main.start(Main.java:196)
[servicegen] at org.apache.tools.ant.Main.main(Main.java:235)
BUILD FAILED
file:C:/Documents%20and%20Settings/344756/New/MyWeb/WebServiceServer/build.xml:2
0: java.lang.SecurityException: Prohibited package name: java.lang
Total time: 1 second
回答by Jesper
What package are your own classes in?
你自己的课程在什么包里?
This error happens because it's forbidden to put your own classes in the package java.lang. It looks like you are trying to compile a class that's in the package java.lang.
发生此错误是因为禁止将自己的类放入包中java.lang。看起来您正在尝试编译包中的类java.lang。
If your own classes are not in a package at all (you don't have a packagestatement at the top of your source files), then put them in a package.
如果您自己的类根本不在包中(package源文件顶部没有声明),则将它们放入包中。
回答by user3125139
If you make sure your project package name is not start with Java or javax, try to use the following way:
如果您确定您的项目包名不是以Java或javax开头,请尝试使用以下方式:
When I run:
当我运行时:
mvn clean install
Command in CLI, it shows build success, when I use Eclipse compile project, it shows
CLI中的命令,它显示构建成功,当我使用Eclipse编译项目时,它显示
java.lang.SecurityException: Prohibited package name: java.lang.annotation
java.lang.SecurityException:禁止的包名:java.lang.annotation
But my parnter project was right, I think it's IDE or compile environment problem, when I downgrade jdk version from 1.8x to 1.7x, the problem is gone.
但是我的伙伴项目是对的,我认为是IDE或编译环境的问题,当我将jdk版本从1.8x降级到1.7x时,问题就消失了。

