即使我在eclipse中使用jre8,也不能使用java.util.regex.Pattern

时间:2014-06-15 14:17:16

标签: java eclipse buildpath

当我将鼠标悬停在scan.useDelimiter("\n");上时出现的错误是:“java.util.regex.Pattern类型无法解析。它是从所需的.class文件间接引用的”

我尝试过重新安装我的Java和JDK。 JRE系统库jre8在我的项目的Java构建路径中引用。这是工作区的默认jre。它有rt.jar,据我所知,应该包含我需要的所有内容。

当我点击跑步时,我得到“Exception in thread "main" java.lang.Error: Unresolved compilation problem: at pack.Main.main(Main.java:15)

第15行只说public static void main(String[] args) {带有错误的代码在主类中,而不是在main方法中。

我对这段代码的目标是阅读用户输入,直到用户点击进入。分隔符部分在那里,因为默认情况下scan.next()在空格处停止,我想要整行。

是的,我已经清理了我的项目。

Eclipse版本:Indigo Service Release 2 Build id:20120216-1857

一些代码:

import java.util.Scanner;
import java.util.regex.*;

private static void someMethod(){
    Scanner scan = new Scanner(System.in);
    scan.useDelimiter("\n");
    String pass = scan.next();
}

我的下一步是什么?

编辑: 在字符串上使用.contrains(String)时出现可比错误: 无法解析java.lang.CharSequence类型。它是从所需的.class文件间接引用的

String test = "bla_bla";
if(test.contains("a_"))

1 个答案:

答案 0 :(得分:4)

我使用JDK 1.8.0_20和Eclipse 4.4.0时遇到了同样的问题。 Eclipse一直说“导入java.util.regex.Pattern无法解析”。这在JDK 7和6中也没有发生。根据我的估计,JDK 8中的包必定有问题。我也遇到了与 javax.swing.JTable 相同的问题。 JDK 8,但不是7或6,所以它必须是JDK 8.

为了解决这个问题,我去找一个包含一个工作模式类的Util包的.jar文件。从http://www.java2s.com/Code/Jar/r/Downloadregexjar.htm下载一个,并将其合并到我的构建路径后,Pattern再次起作用。同样的解决方案也解决了Swing包的问题。

这不是理想的解决方案,因为.jar文件包含JDK 1.8.0_20中已包含的大量冗余软件包,但它是唯一可以提出的解决方案,除了降级到JDK 7或6。

我希望Oracle能够在将来的JDK 8版本中尽快解决这个问题。

希望这有帮助!