0

我正在使用一个小型的“基于 xml 文本的数据库”来存储信息。在编码和调试时,我创建的方法没有问题,但是作为 exe 文件(用 jsmooth 包装),它给了我一个错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoSuchMethodError: java.io.BufferedReader.lines()LJava/util/stream/Stream: 
      at primary.loadErrorDB(primary.java:471

所以我检查了第 471 行,但在 Intellij 上,没有这样的错误,那里一切正常。

希望你们知道该怎么做。

这是方法

    public static Object[] loadErrorDB() {

    File db = new File(System.getProperty("user.dir") + "\\errordb.xml");

    Object[] errordbAry = new String[20][20];

    FileReader file = null;
    try {
        file = new FileReader(db);
    } catch (Exception ex) {
        ex.printStackTrace();
    }

    try {
        BufferedReader br = new BufferedReader(file);

        Stream<String> streamList = br.lines();

        errordbAry = streamList.toArray();

    } catch (Exception ex) {
        ex.printStackTrace();
    }


    String a = "";
    for (Object o : errordbAry) {
        a = a + String.valueOf(o) + ";";
    }

    String[] srgAry = a.split(";");

    String[] newAry = new String[srgAry.length - 5];
    int x = 0;

    for (int i = 5; i < srgAry.length; i++) {
        newAry[x] = srgAry[i];
        x++;
    }

    return newAry;

}
4

3 回答 3

1
br.lines(); <--BufferedReader don't have method lines() upto Java7 use readLine()

更新 Java 以Java8使用此功能。

如果您想一次阅读一行,请使用

String line=br.readLine();

在此之前,请确保您尝试读取的文件逐行null检查。

String line=null;
if((line=br.readLine())!=null)
  {//Go Ahead
  }

查看更多来自BufferedReader

于 2014-07-03T09:02:12.480 回答
1

http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#lines--

Java8 中添加了 BufferedReader.lines()。使用 jsmooth 打包后检查正在使用的 Java 版本。

于 2014-07-03T09:03:39.830 回答
0

java.io.BufferedReader直到 java 7 中的类有readLine()但它没有lines() 引用方法。但在 java 8java.io.BufferedReader中,lines()指的是 java 8

所以首先检查你有哪个版本的java,然后相应地继续

于 2014-07-03T09:04:14.657 回答