NutzCN Logo
问答 部署nutzboot打包的jar项目,报java.lang.ClassNotFoundException: javax.xml.ws.http.HTTPException
发布于 1997天前 作者 @yz 4766 次浏览 复制 上一个帖子 下一个帖子
标签:

nutzboot版本:2.3

==部署脚本所在服务器==
系统:ubuntu16.10
java版本:1.8
Maven版本:3.3.9

==远程主机环境==
系统:ubuntu18.04
java版本:1.8

问题描述:
用脚本部署到远程主机上。
第一次运行报这个错误:java.lang.ClassNotFoundException: javax.xml.ws.http.HTTPException,且项目不能访问。

然后需要登陆远程主机,再次启动项目。就不报这个错。项目能正常访问。

日志片段:

[WARN ] 14:54:30.393 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:554) - Failed startup of context o.e.j.w.WebAppContext@317e9c3c{/tzd/backend,[jar:file:/usr/local/tzd-all/tzd-backend/tzd-backend-0.0.1-SNAPSHOT.jar!/static/, file:///root/webapp/],UNAVAILABLE}
java.lang.NoClassDefFoundError: javax/xml/ws/http/HTTPException
        at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
        at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3119)
        at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3144)
        at java.base/java.lang.Class.getMethods(Class.java:1863)
        at org.nutz.mvc.impl.Loadings.isModule(Loadings.java:345)
        at org.nutz.mvc.impl.Loadings.checkModule(Loadings.java:202)
        at org.nutz.mvc.impl.Loadings.scanModuleInPackage(Loadings.java:188)
        at org.nutz.mvc.impl.Loadings.scanModules(Loadings.java:167)
        at org.nutz.mvc.impl.NutLoading.getModuleClasses(NutLoading.java:449)
        at org.nutz.boot.starter.nutz.mvc.NbMvcLoading.getModuleClasses(NbMvcLoading.java:45)
        at org.nutz.mvc.impl.NutLoading.evalUrlMapping(NutLoading.java:184)
        at org.nutz.mvc.impl.NutLoading.load(NutLoading.java:108)
        at org.nutz.boot.starter.nutz.mvc.NbMvcLoading.load(NbMvcLoading.java:28)
        at org.nutz.mvc.ActionHandler.<init>(ActionHandler.java:19)
        at org.nutz.mvc.NutFilter._init(NutFilter.java:91)
        at org.nutz.mvc.NutFilter.init(NutFilter.java:69)
        at org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:139)
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:741)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:374)
        at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1497)
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1459)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:847)
        at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:287)
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:545)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
        at org.eclipse.jetty.server.Server.start(Server.java:416)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:113)
        at org.eclipse.jetty.server.Server.doStart(Server.java:383)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.nutz.boot.starter.jetty.JettyStarter.start(JettyStarter.java:129)
        at org.nutz.boot.AppContext.startServers(AppContext.java:306)
        at org.nutz.boot.NbApp.execute(NbApp.java:205)
        at org.nutz.boot.NbApp.run(NbApp.java:178)
        at com.tzding.tzd.BackendLauncher.main(BackendLauncher.java:46)
Caused by: java.lang.ClassNotFoundException: javax.xml.ws.http.HTTPException
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
        ... 36 more

13 回复

这个肯定不是jdk8, 起码jdk9+才有java.base

在pom.xml加上

		<dependency>
    		<groupId>javax.xml.bind</groupId>
    		<artifactId>jaxb-api</artifactId>
    		<version>2.3.0</version>
		</dependency>

意思是项目中有的代码使用了jdk9才有的功能,导致出这个问题的吗?

或者说还有其他情况?

jar包目录部分如下:
C:\Users\z\Desktop\tzd-backend-0.0.1-SNAPSHOT.jar\javax\xml\
datatype
namespace
parsers
stream
transform
validation
xpath
XMLConstants.class

=========================
datatype,namespace,parsers,stream,transform,validation,xpath这几个是目录。

jdk9开始, 默认不带jaxb了, 所以报错

但是服务器上安装的版本是jdk1.8呀。

那个报错明显不是jdk8

远程服务器输入:java -version
显示:
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

输入:update-alternatives --config java
显示:
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-11-openjdk-amd64/bin/java
Nothing to configure.

不会是这个吧?

因为第一次启动时脚本启动的,即自己写的startup.sh里面执行:
nohup java -Djava.awt.headless=true -jar ...
第二次时执行的alias的快捷命令,即/root/.bashrc里面:
tzdBup=''nohup java -Djava.awt.headless=true -jar ...'

第二次时执行的alias的快捷命令,即/root/.bashrc里面:
alias tzdBup=''nohup java -Djava.awt.headless=true -jar ...'

那是走了jdk11

执行:
ll /usr/bin/java
显示:
lrwxrwxrwx 1 root root 22 Sep 18 18:25 /usr/bin/java -> /etc/alternatives/java*

执行:
ll /etc/alternatives/java
显示:
lrwxrwxrwx 1 root root 43 Sep 18 18:25 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java*

Ubuntu18.04的默认jdk版本openJDK-11

添加回复
请先登陆
回到顶部