Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 由于对所需库的限制,对类的访问限制_Java_Eclipse - Fatal编程技术网

Java 由于对所需库的限制,对类的访问限制

Java 由于对所需库的限制,对类的访问限制,java,eclipse,Java,Eclipse,我在Eclipse中收到以下错误消息: Access restriction: The type DirectoryWalker is not accessible due to restriction on required library /Library/Java/Extensions/commons-io-1.4.jar 这是什么意思?在同一个话题上有很多不同的观点,但在这种情况下似乎不适用。我不是在创建一个新的java类,而是在尝试使用它。据猜测,您正在使用的另一个库也需要Apac

我在Eclipse中收到以下错误消息:

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

这是什么意思?在同一个话题上有很多不同的观点,但在这种情况下似乎不适用。我不是在创建一个新的java类,而是在尝试使用它。

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

值得一提的是,我最近也犯了这个错误(不同的库)

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


由此产生的碰撞产生了您所经历的(毫无帮助的)错误。因此,对于任何其他人来说,你可能也会考虑你的类路径。

< P>到java构建路径,在库标签下,删除JRE系统库。然后再次添加库-->JRE系统库


为我工作

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


右键单击项目,选择Maven>updateprojectconfiguration并给它几秒钟的时间。

这是我最不喜欢的错误,我已经遇到过几次,而“对所需库的限制”非常枯燥,让你挠头。但是,它很容易修复

最快的方法(我使用的是Helios)是转到窗口->首选项->Java->编译器->错误/警告,找到并打开“不推荐的和受限制的API”项目符号,并将禁止的和不鼓励的引用设置为错误以外的内容

“警告”通常是最好的,因为JavaLand中的某些东西触发了这一点,您可能需要在上面添加脚注@在98%的情况下,抑制警告及其近亲对程序员的个人和社会逻辑的影响与以太狂饮的影响是一样的。但这只是我谦虚的分析


祝你好运

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

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


这肯定是最好的解决方案

在我的例子中,我可以通过在项目文件夹的属性中取消勾选文件夹属性“只读”来解决这个问题

然后,我重新配置了项目的构建路径,然后清理


它解决了这个错误

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

是否有更好的地方放置不会自动“吸入”的.jar文件?(从我的类路径中删除所有内容并将特定的库添加到我的Eclipse构建路径解决了它,谢谢。)很好的发现。这绝对是最好的答案。对我来说也很有用,现在我如何在我的maven POM文件中实现这个魔法?荒谬。JavaFX在获取“访问限制”时遇到问题,这个技巧解决了这个问题!谢谢我第一次尝试访问JavaFX(jfxrt.jar)时出现了这个错误(JavaFX的HelloWorld教程)。附加说明:删除jre系统库时,请确保在删除后退出“构建配置”区域。然后,当您返回并重新添加时,错误就会消失。Bizare bug和我没有解释到底发生了什么。这如何帮助回答OP的问题?我不知道,我在4年前问过。可能是这个的重复。我在5年多前就注意到了这种相似性,但这有点不同。至少我当时以为是这样。但那是5年前的事了。