Jakarta ee 对jdk1.7/jre/lib/rt.jar的访问限制

Jakarta ee 对jdk1.7/jre/lib/rt.jar的访问限制,jakarta-ee,java,java-7,Jakarta Ee,Java,Java 7,大家好,我在创建JAXB解析器时遇到了一个非常奇怪的问题。当我试图从eclipse生成JAXB类时,在一个类中,它显示了一个非常奇怪的错误,即 Access restriction: The type QName is not accessible due to restriction on required library /usr/lib/jvm/jdk1.7.0_02/jre/lib/rt.jar 这是我的课 package generated; import javax.xml.bi

大家好,我在创建JAXB解析器时遇到了一个非常奇怪的问题。当我试图从eclipse生成JAXB类时,在一个类中,它显示了一个非常奇怪的错误,即

Access restriction: The type QName is not accessible due to restriction on required library /usr/lib/jvm/jdk1.7.0_02/jre/lib/rt.jar
这是我的课

package generated;

import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlElementDecl;
import javax.xml.bind.annotation.XmlRegistry;
//import javax.xml.namespace.QName;
import javax.xml.namespace.*;


@XmlRegistry
public class ObjectFactory {
在这条线上,我得到了错误信息

私有最终静态QName_ExpenseReport_QName=新QName(“,”ExpenseReport”)

/**
*创建新的ObjectFactory,该ObjectFactory可用于为package:generated创建架构派生类的新实例
* 
*/
公共对象工厂(){
}
/**
*创建{@link ExpenseT}的实例
* 
*/
公共支出集createExpenseT(){
返回新的支出();
}
/**
*创建{@link UserT}的实例
* 
*/
public UserT createUserT(){
返回新的UserT();
}
/**
*创建{@link ItemT}的实例
* 
*/
public ItemT createItemT(){
返回新的ItemT();
}
/**
*创建{@link ItemListT}的实例
* 
*/
public ItemListT createItemListT(){
返回新的ItemListT();
}
/**
*创建{@link JAXBElement}{@code}的实例
* 
*/
@XmlElementDecl(名称空间=“name=”expenseReport”)
公共JAXBElement createExpenseReport(支出集值){
返回新的JAXBElement(_ExpenseReport_QNAME,ExpenseT.class,null,value);
}
}

当类路径引用的是
JRE
而不是项目打开到的
JDK
时,会出现此问题,请执行一件事转到

构建路径>库


删除包含的运行时并添加
jdk
运行时,它现在应该可以解决您的问题了。

我遇到了下一个错误:访问限制:

由于对所需库C:\Program Files(x86)\Java\jre7\lib\rt.jar的限制,无法访问XmlRegistry类型

这就是我解决问题的方法:

1.Go to the Build Path settings in the project properties. (Right click on your application, then in the popout window you will see 'Build Path', slide right and click on 'Configure Build Path...')
2.Remove the JRE System Library
3.Add it back; Select "Add Library" and select the JRE System Library. 

默认设置对我有效。

这种情况可以通过以下方式解决:

1-转到“项目属性”对话框的“Java编译器”部分,然后查看错误和警告。 2-选中“启用项目特定设置”。 3-内部不推荐和受限API将禁止引用(访问规则)更改为警告或忽略


4-请不要在祈祷中忘记我

只需删除并重新添加相同的JRE系统库


注意:在删除和重新添加时,请确保单击“确定”并关闭对话框。

可能相关:谢谢-这对我很有帮助:)我在将maven-jaxb2-plugin与maven/JAXB/m2e/Eclipse一起使用时遇到了这个问题。Eclipse使用的是Java1.5,所以我添加了maven编译器插件,将我的源代码和目标版本设置为1.7,一切都很好。我认为@NathanielWaisbrot是正确的(至少在某些情况下)。我也有同样的问题,但我使用的是JDK。为Java 1.7而不是1.5设置maven插件也为我解决了一些问题。在Java 8中,我在实例化com.sun.security.auth.module.NTSystem NTSystem=new com.sun.security.auth.module.NTSystem()时遇到了相同的错误;将java compliance更改为1.5为我解决了这个问题。
1.Go to the Build Path settings in the project properties. (Right click on your application, then in the popout window you will see 'Build Path', slide right and click on 'Configure Build Path...')
2.Remove the JRE System Library
3.Add it back; Select "Add Library" and select the JRE System Library.