为了在Eclipse中创建我的第一个简单的Kotlin项目,我按照Kotlin官方网站上的Eclipse Luna入门教程中的步骤进行了操作,即:
main
方法在"src"文件夹中创建文件"hello.kt"但是,我在Eclipse控制台中不断收到以下错误:
错误:无法找到或加载主类HelloKt
我已经仔细检查了我的项目的运行配置,它确实将"主类"设置为HelloKt
(我100%确定它不存在).此外,当我点击"搜索"按钮时,Eclipse找到的唯一项目HelloKt - (default package)
(同样不存在).
为了完整起见,请在下面找到hello.kt
文件代码:
fun main(args: Array<String>) {
println("Hello, World")
}
Run Code Online (Sandbox Code Playgroud)
我注意到教程和我做的之间有以下不同之处:
jdk1.6.0_45
,而我正在使用jdk1.7.0_79
.请注意,我使用的是最新版本的Kotlin Eclipse插件,因此这与此帖中的情况不同.这些是我当前安装中的版本:
在运行应用程序时,这些差异是否会导致错误?
您是否看到/了解有关此方案的任何潜在原因或已知错误?
更新(2017年5月14日)
试用Eclipse Neon.3(eclipse.buildId = 4.6.3.M20170301-0400),JDK 1.8.0_111,Kotlin 0.8.2.v20170314-0957(kotlin-eclipse-policy 0.8.2.v20170314-0957,kotlin-weaving -feature 0.8.2.v20170314-0957,Equinox Weaving SDK 1.2.0.201701131634).问题依然存在.
使用java -version给了我这个.
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
Run Code Online (Sandbox Code Playgroud)
它是OpenJDK还是OracleJDK?
ojdbc6.jar是否适用于JDK 1.7和Oracle 12c?我应该使用ojdbc7.jar吗?
先感谢您.
看起来JDK 1.7.0_80中的Thawte根证书被撤销了. https://www.thawte.com/roots/retired.html
使用7u80 jarsigner不再有效,而且几天前工作正常.
/usr/java/jdk1.7.0_80/jre/../bin/jarsigner -keystore /home/build/keystore.p12 -storepass storepass -storetype pkcs12 -tsa https://timestamp.geotrust.com/tsa /home/build/jenkins/workspace/my-gui/target/my-gui-3.0.29-SNAPSHOT.jar comp
jarsigner: unable to sign jar: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
Run Code Online (Sandbox Code Playgroud)
在删除旧证书后,我尝试将Thawtes Timestamping CA证书导入cacerts.
wget https://www.thawte.com/roots/Thawte_Timestamping_CA.pem
/usr/java/jdk1.7.0_80/bin/keytool -import -trustcacerts -alias verisigntsaca -file Thawte_Timestamping_CA.pem -keystore jre/lib/security/cacerts
Enter keystore password:
Trust this certificate? [no]: yes
Certificate was added to keystore
Run Code Online (Sandbox Code Playgroud)
使用JDK 8u60的jarsigner工作,所以我试图将它的cacerts复制到JDK7,但这也不起作用.
由于Javadoc错误,我们无法使用Java 8进行编译.我看到的唯一解决方案是在JDK7中创建符号链接到JDK8 jarsigner.
/usr/java/jdk1.8.0_60/jre/../bin/jarsigner -keystore /home/build/keystore.p12 -storepass storepass -storetype pkcs12 -tsa https://timestamp.geotrust.com/tsa /home/build/jenkins/workspace/my-gui/target/my-gui-3.0.29-SNAPSHOT.jar comp
jar signed.
Run Code Online (Sandbox Code Playgroud)
如果我将tsa从geotrust切换到digicert,它可以正常使用JDK 7,因为它们不使用https. http://timestamp.digicert.com/
我将java 1.7从1.8降级,但我仍然看到1.8 java -version
.我改变了,path
并JAVA_HOME
改为1.7作为
JAVA_HOME: C:\Program Files (x86)\Java\jdk1.7.0_79
PATH: C:\Program Files(x86)\Java\jdk1.7.0_79\bin
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我在我的道路上也有这个:C:\ProgramData\Oracle\Java\javapath
我相信保留这个1.8版本.当我从路径上取下它时,我得到这样的信息:C:\Program Files\Java\jre7\lib\amd64\jvm.cfg
.我不知道发生了什么事.任何建议都会非常有帮助.
我有一个在 java JDK 1.7 下运行的批处理。它在带有 RHEL、2.6.18-308.el5 #1 SMP 的系统上运行。
此过程从数据库中获取元数据对象列表。它从这个元数据中提取文件的路径。该文件可能实际存在,也可能不存在。
该进程使用 ExecutorService ( Executors.newFixedThreadPool()
) 来启动多个线程。每个线程都运行一个 Callable,它启动一个进程,该进程读取该文件并在该输入文件存在时写入另一个文件(并记录结果),如果该文件不存在则不执行任何操作(记录该结果除外)。
我发现行为是不确定的。尽管每个文件的实际存在始终不变,但运行此过程并不会给出一致的结果。它通常会给出正确的结果,但偶尔会发现一些确实存在的文件不存在。如果我再次运行相同的过程,它会发现它之前所说的文件不存在。
为什么会发生这种情况,是否有更可靠的替代方法?在其他线程尝试读取目录时在多线程进程中写入文件是否错误?较小的线程池会有所帮助(目前为 30)吗?
更新: 这是在这种情况下工作线程调用的 unix 进程的实际代码:
public int convertOutputFile(String inputFile, String outputFile)
throws IOException
{
List<String> args = new LinkedList<String>();
args.add("sox");
args.add(inputFile);
args.add(outputFile);
args.addAll(2, this.outputArguments);
args.addAll(1, this.inputArguments);
long pStart = System.currentTimeMillis();
int status = -1;
Process soxProcess = new ProcessBuilder(args).start();
try {
// if we don't wait for the process to complete, player won't
// find the converted file.
status = soxProcess.waitFor(); …
Run Code Online (Sandbox Code Playgroud) 我已经安装了Android Studio-2.2版和jdk 1.7.0_72版。在安装过程中发生错误“警告:准备sdk软件包google apis intel x86 atom系统映像时发生错误”。我已将图像发布在此处,after_installation_problem。虽然有错误显示我跳过了该操作,然后单击完成。但是当我运行Android Studio时,它显示“您的Android SDK丢失,过时或丢失模板”。图像在这里... after_installation_problem。我被困住了..请帮帮我。
通过以下方式启动java进程有什么区别:
java -jar application.war
Run Code Online (Sandbox Code Playgroud)
和
java -classpath application.war org.example.Main
Run Code Online (Sandbox Code Playgroud)
问题是我正在使用-jar参数启动Spring Boot Application,进程正常启动,但在eclipse应用程序启动时出现异常:
Caused by: java.lang.ClassNotFoundException: com.sun.istack.localization.Localizable
Run Code Online (Sandbox Code Playgroud) 我使用 maven 创建了一个项目,但是在构建项目时出现错误。我正在使用 jdk 1.7u21
如果我使用 jdk 1.8,则构建工作正常,只有我使用 jdk 1.7,那么问题就来了。
尝试在我使用的构建目标中使用 TSL 1.2
-Dhttps.protocols=TLSv1.2 全新安装
我也尝试添加以下内容: wagon-ftp 和 plexus-utils 作为 under build
但仍然无法正常工作
我的 pom 文件如下所述:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.collibra.aig.profitcenter</groupId>
<artifactId>ProfitCenterCodes</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ProfitCenterCodes</name>
<description>ProfitCenterCodes</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<log4j.version>2.3</log4j.version>
<lombok.version>1.18.6</lombok.version>
<apache.httpclient.version>4.5.3</apache.httpclient.version>
<jackson.version>1.9.4</jackson.version>
<spring.core.version>5.1.6.RELEASE</spring.core.version>
<spring.context.version>5.1.6.RELEASE</spring.context.version>
<jacksondatabind.version>2.9.9</jacksondatabind.version>
<slf4j.version>1.7.12</slf4j.version>
<spring.web>5.1.7.RELEASE</spring.web>
</properties>
<dependencies>
<!-- Log4j API and Core implementation required for binding -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency> …
Run Code Online (Sandbox Code Playgroud) 我在寡妇和使用日食.目前我正在使用java 7.现在我想使用java 8.但我无法卸载java 7,因为我的一些旧项目在java 7中工作.
那么如何同时安装两个java版本并在这些版本之间切换.
我只想要一些特定的项目将使用java 8.
我搜索了这个问题,例如
如何修复 java.lang.UnsupportedClassVersionError: Unsupported major.minor version
但答案对我不起作用
我正在使用 jdk 1.7,我将编译器设置为 1.7.0_79,这意味着是 java 7,但是当我运行时,我仍然收到错误,我将项目字节码版本设置为 1.7 但同样的消息
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/hibernate/jpa/HibernatePersistenceProvider : Unsupported major.minor version 52.0
Run Code Online (Sandbox Code Playgroud)
尝试在此行加载persistence.xml 时发生此异常
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
Run Code Online (Sandbox Code Playgroud)
并在这一行的java代码中
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("sample");
Run Code Online (Sandbox Code Playgroud) 我正在使用第三方库,它有一个枚举类,如下所示:
public enum Version {
VERSION_2_0("v2.0"),
VERSION_2_1("v2.1"),
VERSION_2_2("v2.2")
private final String urlElement;
Version(String urlElement) {
this.urlElement = urlElement;
}
public String getUrlElement() {
return this.urlElement;
}
public boolean isUrlElementRequired() {
return null != this.urlElement;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在从道具文件中读取版本,我想传递给这个枚举,以获得各自的枚举常量,如下所示:
String str="v2.2"; //this i get from a props file
System.out.println("version enum: "+Version.valueOf(str));
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
Exception in thread "main" java.lang.IllegalArgumentException: No enum constant com.pkg.Version.v2.2
Run Code Online (Sandbox Code Playgroud)
似乎"v2.2"没有被视为单个字符串.我通过在字符串中转义点来尝试了几种方法,但它们都没有工作.我正在使用JDK1.7.所以有人遇到过这个,请指教.
我需要帮助来提取 WLS,我尝试使用 CMD 安装 WebLogic Server,并且我已经设置了 java_home。但我有以下错误:
提取安装程序。. . . . . 完成
此安装程序必须使用 Java 开发工具包 (JDK) 执行,
但 C:\Program Files\Java\jre7 不是有效的 JDK Java Home。
日志位于:C:\Users\E440\AppData\Local\Temp\OraInstall2016-12-18_05-38-26AM\launcher2016-12-18_05-38-26AM.log。按 Enter 退出
我试图设置 JAVA_HOME
C:\Oracle\FMW>set java_home
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_79
这就是我在环境变量中设置的路径,但它仍然显示相同的错误。
我将命令更改为指定的oracle home
C:\Oracle\FMW>java -jar fmw_12.2.1.2.0_wls_quick.jar oracle_home=C:\app\user\product\11.2.0\dbhome
但是再次错误仍然相同。
在C:\ Program Files文件\的Java \ jre7 路径甚至没有在我的环境变量。
有什么我错过了吗?