【问题标题】:Eclipse 3.5.1 Compiler Error :The type OutputFormat is not accessible due to restriction on required library ../rt.jarEclipse 3.5.1 编译器错误:由于所需库的限制,无法访问类型 OutputFormat ../rt.jar
【发布时间】:2010-12-03 19:24:25
【问题描述】:

这个错误很奇怪,我无法理解它。我已经安装了 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的一些插件上。有什么想法吗?

附:我找到了这个 article。但如果我不需要,我不喜欢或不想更改代码。先说问题的根源是什么,然后解决办法。。

【问题讨论】:

    标签: java restriction


    【解决方案1】:

    Eclipse 编译器的默认配置过于严格。您可以通过打开 Java 的首选项 -> 编译器 -> 错误/警告并在“已弃用和受限的 API”下将“禁止引用(访问规则)”的设置从错误更改为警告或忽略来放松它。

    但是,一个问题是您是否真的想使用 com.sun.-package 中的类,因为您不能保证这些类在来自不同供应商的 VM 或来自 Sun 的较新 VM 中可用。

    【讨论】:

    • 是的,我知道 eclipse 设置可以解决这个问题,但是旧 RCP 版本中的设置相同,我没有遇到问题。我以前从未听说过..所以,为什么那个包是 com.sun。甚至存在,如果他不推荐使用??
    • 导入的目的是读/写 XML 文件,因为我的理解是 JDK1.6 内置了 XML 解析器。你是否建议不能这样做,因为 com.sun。 * 不应该使用?
    • 它由公共 API 内部使用,可能是 JAXB 之类的。如果您直接需要这些类,则应将 Apache Xerces-J 添加为库,并改用 org.apache.xml.serialize.OutputFormat 和 org.apache.xml.serialize.XMLSerializer 类。
    • 哦 nooo..another import :-(。我试图避免这种情况..嗯嗯..所以,这是最终的?底线是,使用 Java API,无法解析 XML 文件?
    • 当然可以,但是您必须使用公共 API,例如javax.xml 而不是您刚刚看到的特定 VM 实现的内部结构,如果您对设置进行微小更改(例如升级到较新的 VM 版本。
    【解决方案2】:

    对于遇到类似问题并且似乎无法使 Eclipse 设置正常工作的任何人(例如我刚才),请注意:检查 项目特定设置。

    【讨论】:

      【解决方案3】:

      我在这个旧帖子上发帖仅供将来遇到此问题的任何人参考。

      我遇到了同样的问题,但这是因为我在使用 1.6 编译器时将编译器合规级别设置为 1.5。如果合规级别设置为低于 1.6,则 1.6 中包含的所有好东西(如 javax.activation 和上面提到的一些 xml 功能)将被 1.6 编译器“限制”。我只需要添加适当的库(例如 activation.jar)来解决我的问题。

      【讨论】:

        猜你喜欢
        • 2012-03-05
        • 2010-10-26
        • 2015-10-13
        • 1970-01-01
        相关资源
        最近更新 更多