我尝试使用Cedar堆栈在heroku云上部署一个简单的Java EE应用程序。
我得到了“ java.lang.UnsupportedClassVersionError:com / app / myApp / main:不支持的major.minor版本51.0(无法加载类com.app.myApp.main &#34; < / p>
这意味着我使用比heroku JVM版本更高的JDK版本进行编译。 我在“system.properties”文件中指定了“java.runtime.version = 1.7”。
我尝试使用JDK重新编译这些其他JDK版本:
•jdk1.7.0_55
•jdk1.7.0_51
•jdk1.7.0_07
例如,当我尝试&#34; jdk1.7.0_07&#34; ,为了确认我使用正确的JDK版本jdk1.7.0_07进行编译,我发布了&#34; javac -version&#34; ,得到了:
我还检查Eclipse是否使用了正确的JDK版本jdk1.7.0_07:
比我编译&amp;使用&#34; mvn clean package&#34; 创建WAR,比使用&#34; heroku deploy部署:war --war myApp.war --app myApp&#34; < /强>
但我仍然得到:
“java.lang.UnsupportedClassVersionError:com / app / myApp / main:不支持的major.minor版本51.0(无法加载类com.app.myApp.main&#34;
而且我试过JDK 6版本,以防Heroku JVM是第6版
使用system.properties文件“java.runtime.version = 1.6
•jdk1.6.0_45
•jdk1.6.0_34
我编译/打包&amp;部署,但我仍然得到:
“java.lang.UnsupportedClassVersionError:com / app / myApp / main:不支持的major.minor版本51.0(无法加载类com.app.myApp.main&#34;
最后说这已经足够了,并试图运行“heroku run bash”,这样我就可以远程进入heroku&amp;尝试通过以下方式查找JVM版本;发出“java -version”或&#34; cd&#34;进入“.jdk”路径&amp;实际上检查正在使用的JVM,b 我一直保持“等待进程超时”...... **没有bash控制台。**
因此Heroku实例上安装的实际JVM版本是什么?怎么能找出???
由于
答案 0 :(得分:0)
您的类文件是为Java7编译的。 但似乎“Heroku”使用较低版本。
仅包含较低版本的Java运行时是不够的,但您必须确保编译器为所需版本创建类文件。
因此,您必须在Java Compiler页面上将目标版本指定为1.6!