使用maven-装配插件中从开始,我可以使用命令独立JAR行为不同IDE
$ mvn clean compile assembly:single
管束我的Java Web应用程序到一个单一的standalone.jar
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>my.package.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>standalone</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</plugin>
比时应用程序是基于灰熊和泽西岛的REST后端。 我可以用
$ java -jar standalone.jar
启动它,它似乎工作。控制台输出告诉我,HTTP服务器已启动,现在正在侦听端口8765.
不幸的是,当我向任何REST端点发送请求时,我收到错误代码为500的内部服务器错误的响应。 正如我可以从输出得出结论,没有任何请求处理方法被调用。
如果应用程序是从IDE IntelliJ(通过按运行按钮)启动的,则该应用程序可以正常工作。
类似的问题,有人问Java JAR behaving differently to program run out of IDE但在我的情况下,标志-Dfile.encoding = UTF-8,也由IDE设置不能解决问题
编辑
至于建议中评论,我试图检查日志输出。我是按照Grizzly Standalone Logging
描述当我运行从最优秀的日志记录级别的IDE的应用程序,我收到了很多其他消息包括异常的方法
Dez 03, 2016 11:36:07 PM org.glassfish.jersey.internal.util.ReflectionHelper$2 run
FINER: Unable to load class org.osgi.framework.BundleReference using the current class loader.
java.lang.ClassNotFoundException: org.osgi.framework.BundleReference
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.glassfish.jersey.internal.util.ReflectionHelper$2.run(ReflectionHelper.java:262)
at org.glassfish.jersey.internal.util.ReflectionHelper$2.run(ReflectionHelper.java:247)
at java.security.AccessController.doPrivileged(Native Method)
at org.glassfish.jersey.internal.util.ReflectionHelper.<clinit>(ReflectionHelper.java:1471)
at org.glassfish.jersey.server.ResourceConfig$State.<init>(ResourceConfig.java:112)
at org.glassfish.jersey.server.ResourceConfig.<init>(ResourceConfig.java:353)
at my.package.Main.main(Main.java:42)
我没有得到任何额外的记录消息时,我执行standalone.jar与-Djava.util.logging.config.file = ...
应该有一些有关服务器的日志文件中的错误。你看了?如果是的话,没有什么,你试图增加日志记录级别? –