我正在使用 solaris,我在 jdk 1.6 上创建了一个 maven 应用程序,但使用 maven-compiler-plugin 将目标指定为 1.5。这是我的 pom.xml 的片段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
虽然当我尝试在 solaris 盒子中运行时,我得到:
bash-2.05$ ./merchantInfoUpdate.sh 线程“主”java.lang.UnsupportedClassVersionError 中的异常:.class 文件中的版本号错误 在 java.lang.ClassLoader.defineClass1(本机方法) 在 java.lang.ClassLoader.defineClass(ClassLoader.java:620) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:56) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:195) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:188) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:251) 在 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
如果我运行mvn install -X
(带调试)并且编译器插件告诉我:
[调试] 配置 mojo 'org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile' --> [调试] (f) basedir = /home/emerson/newworkspace/java-batch-updater [调试] (f) buildDirectory = /home/emerson/newworkspace/java-batch-updater/target [调试] (f) 类路径元素 = [/home/emerson/newworkspace/java-batch-updater/target/classes, /home/emerson/.m2/repository/commons-logging/commons-logging/1.1.1/commons- logging-1.1.1.jar,/home/emerson/.m2/repository/log4j/log4j/1.2.12/log4j-1.2.12.jar] [调试] (f) compileSourceRoots = [/home/emerson/newworkspace/java-batch-updater/src/main/java] [调试] (f) compilerId = javac [调试] (f) 调试 = 真 [调试] (f) failOnError = true [调试] (f) fork = false [调试] (f) 优化 = 假 [调试] (f) outputDirectory = /home/emerson/newworkspace/java-batch-updater/target/classes [调试] (f) outputFileName = com.company.ingestion.updater-2010.01 [调试] (f) projectArtifact = com.yell:com.company.ingestion.updater:jar:2010.01 [调试] (f) showDeprecation = false [调试] (f) showWarnings = false [调试] (f) 源 = 1.5 [调试] (f) staleMillis = 0 [调试] (f) 目标 = 1.5 [调试] (f) 详细 = 假 emerson@emerson-desktop:~/newworkspace/java-batch-updater/target/expand$ 文件 com/yell/ingestion/updater/ListingsManager.class com/yell/ingestion/updater/ListingsManager.class:已编译的 Java 类数据,版本 50.0(Java 1.6)
爪哇版:
bash-2.05$ java-版本 java版本“1.5.0_05” Java(TM) 2 运行时环境,标准版(内部版本 1.5.0_05-b05) Java HotSpot(TM) 服务器虚拟机(内部版本 1.5.0_05-b05,混合模式)
启动脚本内容:
bash-2.05 美元以上 库=库 类路径=“。” for i in `find $LIB -name *.jar`; 做 CLASSPATH="$CLASSPATH:$i"; 完毕; 导出类路径 CLASSPATH=$CLASSPATH:资源/属性 java $* -cp $CLASSPATH com.company.ingestion.updater.ListingsManager
我确保它实际上是我正在构建的 jar 导致问题,将它单独留在应用程序类路径中,但我仍然得到同样的错误。
有任何想法吗?
谢谢