**Description**
Access restriction: The type Test is not accessible due to restriction on required library
**Resource**
/Applications/Eclipse Java/plugins/org.junit_4.11.0.v201303080030/junit.jar
**Path**
AdditionTest2.java
**Location**
/Practice/src/testing line 5
**Type**
Java Problem
我已经看到了其他SO线程的答案:
Access restriction on class due to restriction on required library
Access restriction on class due to restriction on required library rt.jar?
我已经应用了修复 - 构建路径 - >删除系统库 - >重新加入,它的工作原理。但是,我仍有两个问题:
1.为什么代码仍以红色突出显示?
顺便说一句,代码如下
package testing;
import static org.junit.Assert.*;
import org.junit.Test;
public class AdditionTest2 {
// @Test is underlined red
@Test
public void testAddition() {
Addition add = new Addition();
int[] numbers = {1, 2};
// this line is underlined red
assertEquals("1 + 2 must be 3", 3, Addition.add(numbers));
}
}
2.导致此错误的原因是什么?我再次阅读了两个主题,但我仍然不明白。
谢谢!
巴乔
编辑:实际上,我已经纠正了 - 它无法正常工作。我对eclipse中的测试不太熟悉,但在JUnit选项卡下,没有任何反应。
编辑2 :构建路径图像,如果有帮助的话
编辑3 :构建JUnit 3和JUnit 4的路径图像
编辑4 +解决方案:实际上,JUnit 4的测试代码根本没有运行 - 当我点击Run - >运行因为它没有运行 - 我试图从Build Path中删除JUnit 3,它现在正常工作!除了现在我还有另一个问题,就是不知道测试失败的原因,但这是另一个问题。
答案 0 :(得分:1)
Eclipse基于OSGi。 OSGi有一个概念:“是的,你可以看到这个类,但你最好不要使用它。”它是private
类的扩展。
一般的想法是来自某人的代码包含公共API,它包含公开的类,因为Java编译器需要它,但它们不是公共API的一部分。
示例是Java运行时中com.sun
包中的类。由于只有Oracle的Java版本包含它们,因此使用它们会很糟糕。这就是为什么Eclipse开发人员将检查添加到他们的编译器中。
在您的情况下,错误消息似乎很奇怪。 junit.jar
不包含私有API。我的猜测是你以某种方式引入了错误的JUnit JAR(即Eclipse认为是私有的,只能访问IDE)。
尝试使用Built Path--> Add Libraries
将“JUnit”添加到项目中,而不是手动添加JAR。
[编辑] 如果使用Built Path--> Add Libraries
添加JUnit JAR,则不应发生此错误。事实上,它首先不应该是错误 - 访问限制是警告。
尝试将编译器选项重置为默认值,然后重试。
答案 1 :(得分:0)
我有同样的问题,可以通过在所有我的交互插件项目中从manifest.mf文件中删除junit(使用依赖选项卡)然后添加junit与替代aproach来解决它 内置路径...... - >添加图书馆... - > JUnit的 正如Aaron上一篇文章中所描述的那样。
答案 2 :(得分:0)
我遇到了一个非常类似的问题,我能够通过更新我的Eclipse项目的类路径文件中的一个条目来解决它,该文件指向旧版本的JUnit。
我改变了
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
到
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
答案 3 :(得分:0)
这可能很明显,但是如果您使用的是Spring框架,请确保也将spring库添加到构建路径中。
下载spring库,例如spring-framework-4.1.6.RELEASE-dist.zip-解压缩到笔记本电脑上的文件夹-C:\ springLib \
然后将用户库添加到构建路径并指向该lib