我已经将项目导入到我的新机器(到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;
答案 0 :(得分:2)
您的所有错误都表明您使用的是过时的Java版本。例如,在Java 5中,没有TimeUnit.MINUTES
:https://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/TimeUnit.html。它已在Java 6中添加。
假设您在isEmpty()
对象上调用String
,情况也是如此:{6}中添加了String.isEmpty()
:https://docs.oracle.com/javase/6/docs/api/java/lang/String.html#isEmpty()因此您将得到一个使用Java 5构建项目时出现isEmpty() undefined
错误。
请检查" JRE系统库"的设置。您正在使用在Eclipse中构建项目:
验证为jar文件显示的路径是否与您要使用的java运行时匹配。
如果仍然无效,请在Eclipse中使用类似
的简单类创建一个新项目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
另一个常见错误来源是项目的编译器合规级别设置:
然而,这并不能解释"未定义的符号"错误,因为它只影响语言级别(例如,是否允许enum
或泛型)。但它可能会解释您的语法错误。
答案 1 :(得分:0)
确保你在eclipse中的自定义jre指向jre文件夹(如果你使用jde,请确保两次不是jde而不是jde内部的jre !! ) !