这个错误很奇怪,我无法理解它。我已经安装了EclipseRCP 3.5.1, Java SE 1.6更新16并切换到SWT 3.5。我已经创建了一个新项目,设置了依赖项并尝试编译。尝试导入时,请使用以下命令:
import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
我收到错误:
Access restriction: The type XMLSerializer is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar.
我已经谷歌了,在这里阅读一些回复......问题仍然存在。 有趣的是,如果我使用以前的EclipseRCP(版本:3.4.2),这个问题永远不会发生。 3.4.2版本使用相同的JRE版本,我刚刚测试了SWT版本。工作良好。我想这个问题依赖于新IDE的一些插件。有什么想法吗?
P.S。我找到了 article。但我不喜欢或想要更改代码,如果我不需要。首先是问题的根源是什么,解决方案将遵循..
答案 0 :(得分:10)
Eclipse编译器的默认配置限制太多。您可以通过打开Java的首选项来放松它 - >编译器 - >错误/警告以及“不推荐使用和受限制的API”下的“禁止引用(访问规则)”的设置将从错误更改为警告或忽略。
但问题是,您是否真的想要使用com.sun.-package中的类,因为无法保证这些类在来自不同供应商的VM或Sun中的较新VM中可用。
答案 1 :(得分:1)
对于遇到类似问题并且似乎无法使Eclipse设置正常工作的人(例如我刚才),请注意:检查<禁止引用“是否未在<错误中设置为< em>项目特定的设置。
答案 2 :(得分:1)
我正在发布这个旧帖子,仅供将来遇到此问题的人参考。
我遇到了同样的问题,但这是因为我在使用1.6编译器时将编译器合规性级别设置为1.5。如果合规性级别设置为低于1.6,1.6编译器中包含的所有好东西(如javax.activation
和上面提到的一些xml功能)将被1.6编译器“限制”。我只需要添加适当的库(例如 activation.jar )来解决我的问题。