Java 9 Spring Boot应用程序的Maven构建期间的RuntimeException
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 9 Spring Boot应用程序的Maven构建期间的RuntimeException,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5618字,纯文字阅读大概需要9分钟。
内容图文
![Java 9 Spring Boot应用程序的Maven构建期间的RuntimeException](/upload/InfoBanner/zyjiaocheng/685/f7faf415ddf047b88d1ae1f2b89454d5.jpg)
我正在构建的Java 9应用程序可以通过IntelliJ IDE进行编译并运行良好.在IDE上,我尝试将其配置为Spring Boot应用程序和普通应用程序,并且两种配置都能正常工作.
在执行Maven构建时,我在堆栈跟踪下面遇到RuntimeException.
Caused by: java.lang.RuntimeException
at org.springframework.asm.ClassVisitor.visitModule(ClassVisitor.java:148)
at org.springframework.asm.ClassReader.readModule(ClassReader.java:762)
at org.springframework.asm.ClassReader.accept(ClassReader.java:663)
at org.springframework.asm.ClassReader.accept(ClassReader.java:527)
at org.springframework.boot.loader.tools.MainClassFinder.createClassDescriptor(MainClassFinder.java:267)
at org.springframework.boot.loader.tools.MainClassFinder.doWithMainClasses(MainClassFinder.java:223)
at org.springframework.boot.loader.tools.MainClassFinder.findSingleMainClass(MainClassFinder.java:203)
at org.springframework.boot.loader.tools.Repackager.findMainMethod(Repackager.java:365)
at org.springframework.boot.loader.tools.Repackager.findMainMethodWithTimeoutWarning(Repackager.java:354)
at org.springframework.boot.loader.tools.Repackager.buildManifest(Repackager.java:325)
at org.springframework.boot.loader.tools.Repackager.repackage(Repackager.java:255)
at org.springframework.boot.loader.tools.Repackager.repackage(Repackager.java:248)
at org.springframework.boot.loader.tools.Repackager.repackage(Repackager.java:193)
at org.springframework.boot.maven.RepackageMojo.repackage(RepackageMojo.java:221)
at org.springframework.boot.maven.RepackageMojo.execute(RepackageMojo.java:208)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
... 22 more
经过分析,其原因是由于提供了ASM api级别.通过直接执行,它是org.springframework.asm.Opcodes#ASM6,但是在使用Maven构建时,正是Opcodes#ASM4引起了问题.
让我知道是否需要将其报告为Spring Framework的问题或是否存在任何解决方法.
Maven版本:3.5.0
春季靴:2.0.0.M5
其模块化构建和POM文件位于:https://gist.github.com/techpavan/faa81d46321004cd50e7403b03d70a2e
一个更简单的复制器在这里可用-https://github.com/techpavan/java9-maven-spring-boot
使用此复制器,您可以发现Maven构建很容易失败.但是当在org.springframework.asm.ClassVisitor>第78行(构造函数)并将执行期间的api值更新为393216(ASM6),您会发现构建成功完成.默认情况下,该值设置为262144(ASM4),该行在第147行失败.
更新:该问题被Spring社区视为错误,并且应在Milestone 6版本-https://github.com/spring-projects/spring-boot/issues/10647中修复
更新:此问题已在2017年10月17日的spring-boot master分支中得到解决.应该是M6版本的一部分.
解决方法:
您的mvn依赖项:tree描述如下:
?[main] [INFO] +- org.springframework.boot:spring-boot-starter-jetty:jar:2.0.0.M5:compile
[main] [INFO] | +- org.eclipse.jetty:jetty-servlets:jar:9.4.7.v20170914:compile
[main] [INFO] | | +- org.eclipse.jetty:jetty-continuation:jar:9.4.7.v20170914:compile
[main] [INFO] | | +- org.eclipse.jetty:jetty-http:jar:9.4.7.v20170914:compile
[main] [INFO] | | +- org.eclipse.jetty:jetty-util:jar:9.4.7.v20170914:compile
[main] [INFO] | | \- org.eclipse.jetty:jetty-io:jar:9.4.7.v20170914:compile
[main] [INFO] | +- org.eclipse.jetty:jetty-webapp:jar:9.4.7.v20170914:compile
[main] [INFO] | | +- org.eclipse.jetty:jetty-xml:jar:9.4.7.v20170914:compile
[main] [INFO] | | \- org.eclipse.jetty:jetty-servlet:jar:9.4.7.v20170914:compile
[main] [INFO] | | \- org.eclipse.jetty:jetty-security:jar:9.4.7.v20170914:compile
[main] [INFO] | | \- org.eclipse.jetty:jetty-server:jar:9.4.7.v20170914:compile
[main] [INFO] | +- org.eclipse.jetty.websocket:websocket-server:jar:9.4.7.v20170914:compile
[main] [INFO] | | +- org.eclipse.jetty.websocket:websocket-common:jar:9.4.7.v20170914:compile
[main] [INFO] | | | \- org.eclipse.jetty.websocket:websocket-api:jar:9.4.7.v20170914:compile
[main] [INFO] | | +- org.eclipse.jetty.websocket:websocket-client:jar:9.4.7.v20170914:compile
[main] [INFO] | | | \- org.eclipse.jetty:jetty-client:jar:9.4.7.v20170914:compile
[main] [INFO] | | \- org.eclipse.jetty.websocket:websocket-servlet:jar:9.4.7.v20170914:compile
[main] [INFO] | | \- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[main] [INFO] | +- org.eclipse.jetty.websocket:javax-websocket-server-impl:jar:9.4.7.v20170914:compile
[main] [INFO] | | +- org.eclipse.jetty:jetty-annotations:jar:9.4.7.v20170914:compile
[main] [INFO] | | | +- org.eclipse.jetty:jetty-plus:jar:9.4.7.v20170914:compile
?[main] [INFO] | | | +- org.ow2.asm:asm:jar:5.1:compile
[main] [INFO] | | | \- org.ow2.asm:asm-commons:jar:5.1:compile
[main] [INFO] | | | \- org.ow2.asm:asm-tree:jar:5.1:compile
这清楚地反映出您的项目对spring-boot-starter-jetty的依赖依赖于asm:5.1,而asm的版本与最新的Java版本不兼容.您可以尝试升级到6.0_BETA版本.
从this issue开始,Jetty并未升级到最新版本,因为它与OSGI版本号不兼容.我在尝试制作vaadin8 application work with Java 9时遇到了这个问题,我可以实现的解决方案是在本地建造码头,然后按照答案中的说明在我的项目中使用自定义版本-
This was attained after overcoming the #jetty.project/1758 by
upgrading to the 6.0_BETA of asm and asm-commons libraries and using
the custom 9.4.7-SNAPSHOT built on my local used in the project(commit
– #e34415.)
更新:这确实是bug in spring-boot milestone,也已在编辑的问题中得到确认.
内容总结
以上是互联网集市为您收集整理的Java 9 Spring Boot应用程序的Maven构建期间的RuntimeException全部内容,希望文章能够帮你解决Java 9 Spring Boot应用程序的Maven构建期间的RuntimeException所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。