使用新机器后语法错误
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!!)!
我已经将项目导入我的新机器(到 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!!)!