使用新机器后语法错误

Errors in good syntax after using new machine

我已经将项目导入我的新机器(到 eclipse),它抛出了 88 个错误,即使在以前的机器上运行良好。以下是错误类型:

MINUTES cannot be resolved or is not a field 
Syntax error 
Method not applicable to arguments
isEmpty() undefined

当我检查它时,所有语法都很好等等。

有人遇到过类似的问题吗?

这是抛出异常的代码(MINUTES 无法解析或不是字段)

try {
        TimeUnit.MINUTES.sleep(Config.DOCS_CHECK_INTERVAL);
    } catch (InterruptedException e) {
        log.error("Exception", e);
    } 

进口:

import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.security.cert.X509Certificate;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.TimeUnit;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.ikubasienki.core.Config;

您所有的错误都表明您使用的是过时的 Java 版本。比如Java5,就没有TimeUnit.MINUTES:https://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/TimeUnit.html。已在 Java 6.

中添加

假设你在一个String对象上调用isEmpty(),同样如此:String.isEmpty()已经添加到Java 6:https://docs.oracle.com/javase/6/docs/api/java/lang/String.html#isEmpty() ,因此在使用 Java 5.

构建项目时会出现 isEmpty() undefined 错误

请检查您用于在 Eclipse 中构建项目的 "JRE System Library" 的设置:

验证显示的 jar 文件路径是否与您要使用的java运行时间匹配。

如果仍然没有帮助,请在 Eclipse 中使用简单的 class 创建一个新项目,例如

package com.example;

public class Simple {
    public static void main(String[] args) {
        System.err.println(System.getProperty("java.version"));
        System.err.println("".isEmpty());
    }
}

和运行它。输出应该类似于

1.7.0_80
true

另一个常见的错误来源是项目的 Compiler Compliance Level 设置:

但是,这不能解释 "undefined symbol" 错误,因为它只影响语言级别(例如,是否允许 enum 或泛型)。不过,它可能会解释您的语法错误。

确保您在 eclipse 中的自定义 jre 指向 jre 文件夹(如果您使用的是 jde,请确保两次它不是指向 jde,而是指向 jde 中的 jre!!)!