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,我已经看到了这些其他SO线程的答案: 我已经应用了修复构建路径-->删除系统库-->将其添加回,它就可以工作了。不过,我仍然有两个问题: 1.为什么代码仍以红色突出显示 顺便说一句,代码如下 **Description** Access restriction: The type Test is not accessible due to restriction on required library **Resource** /Applications/Eclipse Java/

我已经看到了这些其他SO线程的答案:

我已经应用了修复构建路径-->删除系统库-->将其添加回,它就可以工作了。不过,我仍然有两个问题:

1.为什么代码仍以红色突出显示

顺便说一句,代码如下

**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"/>