【问题标题】:Access restriction on class due to restriction on required library由于对所需库的限制,对类的访问限制
【发布时间】:2010-11-08 13:28:38
【问题描述】:

我在 Eclipse 中收到此错误消息:

Access restriction: The type DirectoryWalker is not accessible
due to restriction on required library 
/Library/Java/Extensions/commons-io-1.4.jar

这是什么意思?在同一主题上有this other SO question,但它似乎不适用于这种情况。我没有创建一个新的 java 类,我正在尝试使用一个。

【问题讨论】:

标签: java eclipse


【解决方案1】:

转到 java 构建路径并在 Library 选项卡下,删除 JRE System Library。然后再次添加库 --> JRE 系统库

为我工作

【讨论】:

  • 不错的发现。这绝对应该是最佳答案。
  • 也适用于我,现在我如何在我的 maven POM 文件中实现这个魔法?
  • 荒谬。 JavaFX 获得“访问限制”时遇到问题,这个技巧解决了它!谢谢!
  • 我第一次尝试访问 JavaFX (jfxrt.jar) 时出现此错误(JavaFX 的 HelloWorld 教程)。小补充说明:当你删除 jre 系统库时,一定要在删除后退出“构建配置”区域。然后,当您返回并将其重新添加时,错误就会消失。奇怪的错误,我无法解释发生了什么。
【解决方案2】:

这是我最不喜欢的错误,我遇到过几次,“对所需库的限制”只是无聊到让你摸不着头脑。但是,它很容易修复。

最快的方法(我正在使用 Helios)是转到 Window->Preferences->Java->Compiler->Errors/Warnings,找到并打开“Deprecated and Restricted API”项目符号,并设置 Forbidden 和 Disouraged引用 Error 以外的内容。

“警告”通常是最好的,因为 Java 领域的某些东西会触发这种情况,您可能需要在其上添加脚注。 @SuppressWarnings 及其近亲,在 98% 的情况下,对程序员的个人和社会逻辑的影响与以太狂欢可能相同。但这只是我的拙劣分析。

祝你好运!

【讨论】:

    【解决方案3】:

    猜测您正在使用的另一个库也需要 Apache Commons I/O,但版本不同。让一段代码(传递地)可以访问相同包的两个版本有点棘手。您可能可以安排它,以便您的代码和其他库使用相同的版本。使用 CLASSPATH 一切都变得简单多了! :)

    【讨论】:

    • 有没有更好的知名位置来放置不会自动“吸入”的 .jar 文件?
    • (从我的类路径中删除所有内容并将特定库添加到我的 Eclipse 构建路径解决了它,谢谢。)
    【解决方案4】:

    不管怎样,我最近也遇到了这个错误(不同的库)。

    我的 IDE (MyEclipse) 引用了某个库作为整个项目类路径的一部分,但我的机器的 Java 扩展文件夹中也有相关 JAR 的副本。

    由此产生的冲突产生了您所经历的(无用的)错误。因此,对于遇到此错误的其他人,您可能也需要考虑您的类路径。

    【讨论】:

      【解决方案5】:

      项目构建路径设置 -> 库选项卡 -> 选择 JRE 系统库 -> 编辑按钮 -> 从显示 J2SE 1.x (jdk1.6.0_21) 的执行环境单选选项卡更改为工作区默认 JRE (jdk1.6.0_21 ) [已收集]

      这肯定是最好的解决方案!

      【讨论】:

      • 这如何帮助回答 OP 的问题?
      • 不知道,4年前问过。
      【解决方案6】:

      我有同样的错误,我修复的方法是将默认工作区 JRE 设置为与项目相同,我将工作区的 JRE6 和项目的 JRE7 设置为 JRE7 都解决了问题

      【讨论】:

        【解决方案7】:

        如果您使用的是 m2eclipse,我发现“更新项目配置”可以修复它。

        右键单击项目,选择 Maven > Update Project Configuration 并等待几秒钟。

        【讨论】:

          【解决方案8】:

          就我而言,我可以通过取消选中项目文件夹的 Properties 中的文件夹属性“Read-only”来解决此问题。

          然后,我重新配置了项目的Build path,然后Clean。

          它已经解决了错误。

          【讨论】:

            【解决方案9】:

            对于那些想知道为什么 Eclipse 可以构建项目而 Maven 不能构建项目的人,请检查您是否将 JUnit 作为库或插件依赖项。如果作为库添加,Maven 将无法获取它并抛出许多访问限制(类型 xyz 不是 API)。

            【讨论】:

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