首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将简单的Spring应用程序从Tomcat移到from是行不通的

将简单的Spring应用程序从Tomcat移到from是行不通的
EN

Stack Overflow用户
提问于 2018-04-24 13:32:25
回答 1查看 1.2K关注 0票数 0

为了学习Spring,我创建了一个非常小的项目,并使用Gradle成功地构建了这个项目。然后,我能够使用.war成功地运行java -jar UserSettingController.war,获得了Spring消息:

代码语言:javascript
复制
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.1.0.BUILD-SNAPSHOT)

接下来,我想把这个从Tomcat移到Websphere from。因此,我天真地将.war文件从我的项目/build/libs/复制到适当的dropins文件夹,然后启动自由服务器。在这一点上,我在自由console.log中看到的不是Spring徽标,而是以下内容:

代码语言:javascript
复制
[WARNING ] CWWKC0044W: An exception occurred while scanning class and annotation data. The exception was java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at [internal classes]
.
[WARNING ] CWWKC0044W: An exception occurred while scanning class and annotation data. The exception was java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at [internal classes]
.
[WARNING ] CWWKC0044W: An exception occurred while scanning class and annotation data. The exception was java.lang.IllegalArgumentException
    at org.objectweb.asm.ClassReader.<init>(Unknown Source)
    at [internal classes]
.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://ui15-lin.utopusinsights.com:9080/UserSettingController/
[AUDIT   ] CWWKZ0001I: Application UserSettingController started in 4.829 seconds.
[AUDIT   ] CWWKF0012I: The server installed the following features: [jsp-2.2, servlet-3.1, ssl-1.0, jndi-1.0, websocket-1.0, json-1.0, localConnector-1.0, adminCenter-1.0, distributedMap-1.0, jaxrs-1.1, restConnector-1.0].
[AUDIT   ] CWWKF0011I: The server defaultServer is ready to run a smarter planet.

我的问题是:那些[Warning]重要吗?如果是的话,问题是什么?或者应用程序实际上是通过Web服务器侦听,如果是的话,它在监听哪个端口(8080?)?

EN

回答 1

Stack Overflow用户

发布于 2018-04-25 20:29:22

很可能,应用程序包含了一个具有java9特性的jar文件。

最简单的是,有一个已经编译到java9的普通类。

更可能的是,应用程序引入了一个实用程序jar,例如log4j,它有一个“模块-信息”类,或者包含一个多版本目录(目前,只有“META/version/9”是可能的)。

(有关多版本jars的更多信息,请参见https://www.javaworld.com/article/3184029/java-language/java-9s-other-new-enhancements-part-4-multi-release-jar-files.html。)

一个“模块-信息”类文件将始终被编译到java9或更高版本。多版本目录中的类将被编译到作为目录名提供的java版本中。

在所有情况下,如果类使用ASM达到注释处理,就会出现IllegalArgumentException。(尝试加载类也会导致异常。)

出现这个问题的部分原因是,当前的WebSphere自由注释处理使用一个简单的测试来发现“类类型”资源,测试是测试类资源名称(文件或jar条目)是否以".class“结尾。在引入模块-info类型类之前,以及在元-INF文件夹下放置类之前,这个测试已经足够了。

作为更新,代码更改将阻止问题类(类“模块-信息”或“META”下的任何类)被处理。有关更多信息,请参见开放自由问题1635:https://github.com/OpenLiberty/open-liberty/issues/1635

关于解决问题的项目更新:我最好的感觉是,该项目更新会影响应用程序中的jars,结果是具有java9特性的jars不再被放入。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50003016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档