Java 此错误的原因:由于所需库的限制,无法访问类型测试?
我已经看到了这些其他SO线程的答案: 我已经应用了修复构建路径-->删除系统库-->将其添加回,它就可以工作了。不过,我仍然有两个问题: 1.为什么代码仍以红色突出显示 顺便说一句,代码如下Java 此错误的原因:由于所需库的限制,无法访问类型测试?,java,eclipse,Java,Eclipse,我已经看到了这些其他SO线程的答案: 我已经应用了修复构建路径-->删除系统库-->将其添加回,它就可以工作了。不过,我仍然有两个问题: 1.为什么代码仍以红色突出显示 顺便说一句,代码如下 **Description** Access restriction: The type Test is not accessible due to restriction on required library **Resource** /Applications/Eclipse Java/
**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
2.是什么导致了这个错误?再说一遍,我已经读了这两条线索,但我还是不明白
谢谢
巴乔
编辑:事实上,我被纠正了——它不起作用。我对eclipse中的测试不太熟悉,但在JUnit选项卡下,什么都不会发生
编辑2:如果有任何帮助,请构建路径图像
编辑3:为JUnit 3和JUnit 4构建路径映像
编辑4+解决方案:实际上,使用JUnit 4的测试代码根本没有运行-当我单击“运行”->“以未运行的方式运行”时,我尝试从构建路径中删除JUnit 3,现在它可以工作了!除了现在我还有另一个问题不知道为什么测试失败,但那是另一个问题 Eclipse基于OSGi。OSGi的概念是“是的,您可以看到这个类,但最好不要使用它。”它是
private
类的扩展
一般的想法是,来自某人的代码包含公共API,它包含公共类,因为Java编译器需要它,但它们不是公共API的一部分
示例是Java运行时中的类,它们位于com.sun
包中。因为只有Oracle版本的Java包含它们,所以使用它们对您不利。这就是为什么Eclipse开发人员将检查添加到他们的编译器中
在您的情况下,错误消息似乎很奇怪junit.jar
不包含私有API。我的猜测是,不知何故,您引入了错误的JUnit JAR(即Eclipse认为是私有的且只能由IDE访问的JUnit JAR)
尝试使用build Path-->Add Libraries
将“JUnit”添加到项目中,而不是手动添加JAR
[EDIT]如果使用构建路径-->添加库来添加JUnit JAR,则不应发生此错误。事实上,这首先不应该是一个错误——访问限制是警告
尝试将编译器选项重置为默认值,然后重试。我也遇到了同样的问题,可以通过在所有交互插件项目中从manifest.mf文件(使用依赖项选项卡)中删除junit,然后使用可选的aproach添加junit来解决此问题
构建路径…-->添加库…-->朱尼特
正如Aaron在上一篇文章中所描述的那样 我遇到了一个非常类似的问题,我能够通过更新Eclipse项目的类路径文件中指向JUnit旧版本的条目来解决它
我变了
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));
}
}
到
这可能是一个显而易见的问题,但是如果您使用的是spring框架,请确保您也将spring库添加到构建路径中
下载spring库,如spring-framework-4.1.6.RELEASE-dist.zip-解压缩到笔记本电脑上的文件夹-C:\springLib\
然后将一个用户库添加到构建路径并指向该库JUnit的构建路径条目是什么样子的?查看.classpath
并在您的问题后面加上一行。您在“控制台”视图中看到了什么吗?@AaronDigulla抱歉,我对生成路径等不太熟悉-您是指项目-->属性-->Java生成路径吗?如果是这样,我已经把它贴在上面了。抱歉,我在Mac电脑上,如何显示.classpath?@blazonix:Close:-)我们对“JUnit 3”下的内容更感兴趣。@AaronDiguilla-实际上,我尝试过(删除JUnit 3,然后再添加回去,删除JUnit 3,然后添加JUnit 4),它不起作用。有些东西对我来说没有意义:你说你使用JUnit3,但上面的错误消息是org.JUnit\u 4.11.0
。你把事实混在一起了吗?@AaronDiguilla我猜你的意思是:首选项->Java->编译器->错误/警告->不推荐和严格的API->禁止引用(访问规则):->更改为警告。这会将消息更改为警告,但问题是警告本身不会消失。@AaronDiguilla哦,不,上面的类使用JUnit 4,但我之前也使用了JUnit 3,所以这两个库都包含在内。好吧,现在我很担心。当您查看图像时,您可以看到当您选择JUnit3时,Eclipse将org.junit_4.11.0
中的junit.jar
添加到您的构建中。这是一个干净的安装吗?
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>