我想在 HEROKU 上部署一个java appa。我是maven的新手。我在将示例应用程序部署到heroku(java + maven + tomcat7)文档中进行了所有设置。 我做了一个bulid,它是成功的。但是,一旦我输入sh / target / bin / weapps,我就会收到以下错误。任何人都可以帮我解决这个问题。
Exception in thread "main" java.lang.NoClassDefFoundError: launch/Main
Caused by: java.lang.ClassNotFoundException: launch.Main</br>
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: launch.Main. Program will exit.
的问候, arunbv
答案 0 :(得分:8)
我有类似的问题,我(好吧,几乎)用这种方式解决了,只需删除:
<packaging>war</packaging>
来自 pom.xml 。我知道这不是一个理想的解决方案,但是不知何故嵌入式tomcat插件不适用于war包装!
答案 1 :(得分:1)
我没有足够的评论意见,但您关注的文章是什么?你能链接吗?
根据错误,我怀疑你的Main.java不在src / main / java / launch中。如果您按照这些说明操作,我认为您应该能够清除错误:
http://devcenter.heroku.com/articles/create-a-java-web-application-using-embedded-tomcat
如果这是您正在关注的文章而且您仍然遇到问题,那么如果您只是克隆样本仓库,它可能会缓解您遇到的问题:
git clone git://github.com/heroku/devcenter-embedded-tomcat.git
答案 2 :(得分:0)
既然你说你是maven的新手,我认为这个错误的原因是你只需将* .java代码放在项目的根文件夹下,而你可能会把它放在./src/下。主/ JAVA /
这对你有用。我遇到了同样的问题并想出了这个问题。
答案 3 :(得分:0)
这可能已经死了,但万一它可以帮助未来的人们。
我使用 Heroku 上的java应用程序启动并运行,使用 Ubuntu 计算机进行开发 - 并在线程&#34中获得相同的异常;主&#34; java.lang.NoClassDefFoundError
仔细检查您是否使用与 java sdk版相同的 java编译器版。
输入java -version
&amp; javac -version
。确保它们是相同的版本。
如果没有,您可以通过重新配置环境来解决此问题,以便对两者使用相同的环境。 假设您已下载并安装了要使用的Java版本,请键入:
`sudo update-alternatives --config java`
你会得到一个包含选项的漂亮菜单
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 auto mode
1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/jdk1.7.0/bin/java 1
选择您要使用的版本。完成。 现在尝试建立。