国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 關于weblogic部署Java項目的包沖突問題的解決

關于weblogic部署Java項目的包沖突問題的解決

2021-07-11 21:28sunshine6 Java教程

這篇文章主要介紹了關于weblogic部署Java項目的包沖突問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

我們可能會用各種應用服務部署我們的java應用,比如tomcat、was、weblogic等。tomcat和was可能會比較少遇到一些奇怪的問題,但是用weblogic部署項目則經(jīng)常遇到一些比如包沖突問題,路徑問題等奇怪但又常見的問題。

今天我就講講關于weblogic部署java項目包沖突的問題。下面我舉個例子:

當我在weblogic部署java項目之后,啟動沒報任何錯,沒有異常。但是當我操作某個功能的時候頁面就報錯了:

關于weblogic部署Java項目的包沖突問題的解決

后臺報了這個錯:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
root cause of servletexception.
java.lang.linkageerror: loader constraint violation: loader (instance of weblogic/utils/classloaders/changeawareclassloader)
previously initiated loading for a different type with name "javax/xml/namespace/qname"
  at java.lang.classloader.defineclass1(native method)
  at java.lang.classloader.defineclass(classloader.java:763)
  at java.security.secureclassloader.defineclass(secureclassloader.java:142)
  at weblogic.utils.classloaders.genericclassloader.defineclass(genericclassloader.java:343)
  at weblogic.utils.classloaders.genericclassloader.findlocalclass(genericclassloader.java:302)
  at weblogic.utils.classloaders.genericclassloader.findclass(genericclassloader.java:270)
  at weblogic.utils.classloaders.changeawareclassloader.findclass(changeawareclassloader.java:64)
  at weblogic.utils.classloaders.changeawareclassloader.loadclass(changeawareclassloader.java:49)
  at java.lang.class.getdeclaredmethods0(native method)
  at java.lang.class.privategetdeclaredmethods(class.java:2701)
  at java.lang.class.privategetmethodrecursive(class.java:3048)
  at java.lang.class.getmethod0(class.java:3018)
  at java.lang.class.getmethod(class.java:1784)
  at org.apache.xmlbeans.xmlbeans.buildmethod(xmlbeans.java:174)
  at org.apache.xmlbeans.xmlbeans.buildnoargmethod(xmlbeans.java:190)
  at org.apache.xmlbeans.xmlbeans.buildgetcontexttypeloadermethod(xmlbeans.java:200)
  at org.apache.xmlbeans.xmlbeans.<clinit>(xmlbeans.java:126)
  at org.openxmlformats.schemas.spreadsheetml.x2006.main.ctworkbook$factory.newinstance(unknown source)
  at org.apache.poi.xssf.usermodel.xssfworkbook.onworkbookcreate(xssfworkbook.java:290)
  at org.apache.poi.xssf.usermodel.xssfworkbook.<init>(xssfworkbook.java:170)
  at com.kayak.web.base.util.export.exportexcelxssf.export(exportexcelxssf.java:893)
  at com.kayak.web.base.action.exportexcelaction.exportexcel(exportexcelaction.java:318)
  at sun.reflect.nativemethodaccessorimpl.invoke0(native method)
  at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)
  at sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)
  at java.lang.reflect.method.invoke(method.java:498)
  at org.springframework.web.method.support.invocablehandlermethod.doinvoke(invocablehandlermethod.java:221)
  at org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:137)
  at org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:110)
  at org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlemethod(requestmappinghandleradapter.java:777)
  at org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:706)
  at org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:85)
  at org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:943)
  at org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:877)
  at org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:966)
  at org.springframework.web.servlet.frameworkservlet.dopost(frameworkservlet.java:868)
  at javax.servlet.http.httpservlet.service(httpservlet.java:727)
  at org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:842)
  at javax.servlet.http.httpservlet.service(httpservlet.java:820)
  at weblogic.servlet.internal.stubsecurityhelper$servletserviceaction.run(stubsecurityhelper.java:227)
  at weblogic.servlet.internal.stubsecurityhelper.invokeservlet(stubsecurityhelper.java:125)
  at weblogic.servlet.internal.servletstubimpl.execute(servletstubimpl.java:301)
  at weblogic.servlet.internal.tailfilter.dofilter(tailfilter.java:26)
  at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:60)
  at com.kayak.web.user.filter.logincertifyfilter.dofilter(logincertifyfilter.java:125)
  at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:60)
  at org.springframework.web.filter.characterencodingfilter.dofilterinternal(characterencodingfilter.java:88)
  at org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:107)
  at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:60)
  at com.kayak.web.base.filter.localrequestfilter.dofilter(localrequestfilter.java:28)
  at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:60)
  at weblogic.servlet.internal.requesteventsfilter.dofilter(requesteventsfilter.java:27)
  at weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:60)
  at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.wraprun(webappservletcontext.java:3748)
  at weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:3714)
  at weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321)
  at weblogic.security.service.securitymanager.runas(securitymanager.java:120)
  at weblogic.servlet.internal.webappservletcontext.securedexecute(webappservletcontext.java:2283)
  at weblogic.servlet.internal.webappservletcontext.execute(webappservletcontext.java:2182)
  at weblogic.servlet.internal.servletrequestimpl.run(servletrequestimpl.java:1499)
  at weblogic.work.executethread.execute(executethread.java:263)
  at weblogic.work.executethread.run(executethread.java:221)

錯誤內容很長,但是要學會辨認,我剛開始就被一大堆錯誤誤導了。關鍵的都是下面的這個:

loader (instance of weblogic/utils/classloaders/changeawareclassloader)
previously initiated loading for a different type with name "javax/xml/namespace/qname"

大概意思就是“加載器之前啟動的時候加載了名字叫javax/xml/namespace/qname的其他類型的類”。其實轉換一下就是,在啟動的時候加載了一個javax/xml/namespace/qname類,我們現(xiàn)在要用的功能需要一個類也叫javax/xml/namespace/qname,但是這個不是我們真正想要的class。

從上面的意思可以知道,這就是有兩個相同包包路徑和類名稱的class,但是有一個想要的卻沒有,只有一個我們并不想要的class。了解weblogic部署的同學都知道,weblogic加載了一個相同的class就不會在加載其他一樣的class了。

當我再操作一次的之后又報另一個錯(部分錯誤內容):

?
1
2
3
4
5
6
7
8
9
10
11
root cause of servletexception.
java.lang.noclassdeffounderror: could not initialize class org.apache.xmlbeans.xmlbeans
  at org.openxmlformats.schemas.spreadsheetml.x2006.main.ctworkbook$factory.newinstance(unknown source)
  at org.apache.poi.xssf.usermodel.xssfworkbook.onworkbookcreate(xssfworkbook.java:290)
  at org.apache.poi.xssf.usermodel.xssfworkbook.<init>(xssfworkbook.java:170)
  at com.kayak.web.base.util.export.exportexcelxssf.export(exportexcelxssf.java:893)
  at com.kayak.web.base.action.exportexcelaction.exportexcel(exportexcelaction.java:318)
  at sun.reflect.nativemethodaccessorimpl.invoke0(native method)
  at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)
  at sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)
  at java.lang.reflect.method.invoke(method.java:498)

就是說不能初始化classorg.apache.xmlbeans.xmlbeans。但是我們不要被這個所誤導,關鍵還是在于上面的javax/xml/namespace/qname ,就是因為這個沖突了所以才會導致后面的問題發(fā)生。

我用 jfind.jar 在項目下的lib目錄下搜索發(fā)現(xiàn)在axis-jaxrpc-1.4.jar下有javax/xml/namespace/qname.class文件。因為在jdk下的 rt.jar 下面也有javax/xml/namespace/qname.class所以就會有兩個一樣的class文件。

關于weblogic部署Java項目的包沖突問題的解決

后面我發(fā)現(xiàn)在項目的 web-inf 下面有個weblogic.xml 文件,里面就有一些關于weblogic的配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<weblogic-web-app>
  <container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
  </container-descriptor>
  <charset-params>
    <input-charset>
      <resource-path>/*</resource-path>
      <java-charset-name>utf-8</java-charset-name>
    </input-charset>
  </charset-params>
</weblogic-web-app>

這個配置文件里的第4行配置就是只先加載項目里的class文件,再加載weblogic的class,也就是因為這個配置而導致了項目里的axis-jaxrpc-1.4.jar下有javax/xml/namespace/qname.class,jdk下的rt.jar 下面也有javax/xml/namespace/qname.class卻沒有加載到,但是后者才是程序所需要的。

因此,我就嘗試把weblogic.xml的第4行配置 改成 false,重新打war包,重新部署,然后發(fā)現(xiàn)問題解決了。

接著我又換了一種嘗試,就是weblogic.xml的第4行配置依然是true ,但是我把項目里那個沖突的class所在的包 axis-jaxrpc-1.4.jar 刪了,也重新打包部署,也沒有問題了。所以到此就把問題給解決了

總結:

1. 在weblogic中部署java應用時,經(jīng)常遇到包沖突問題,其實首先可以通過修改weblogic.xml配置來解決,另一種方式就是通過jfind.jar 找出沖突的class所在的包,直接把這個包刪了,可以解決。

2. 包沖突問題都可以通過上面的兩種方式解決,還有就是 有時候可能會包找不到某個class文件,其實很有可能就是因為class文件沖突,以及先后加載的順序問題,導致我們項目中真正需要的class文件卻沒有被加載進來。

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/sunshine6/p/10301372.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 中国精品自拍 | 精品日韩一区二区三区 | 日本中文字幕在线免费观看 | 精品自拍视频 | 国产日韩欧美一区二区 | 日韩在线免费观看视频 | 日韩成人在线视频 | 色香阁99久久精品久久久 | 91捆绑91紧缚调教91 | 永久免费av片在线观看全网站 | 91在线视频观看 | a天堂中文在线观看 | 91精品国产一区二区三区香蕉 | 欧美a级成人淫片免费看 | 亚洲精品电影网在线观看 | 欧美视频在线观看 | 北条麻妃一区二区三区中文字幕 | 久久久久久久av | 久久99精品国产麻豆婷婷洗澡 | 操操操操操操 | 中文在线观看www | 日日干,天天干 | 欧美日韩精品久久久 | 精品成人av | 欧洲精品码一区二区三区免费看 | 亚洲五码在线 | 久久国产欧美日韩精品 | 亚洲综合视频 | 国产精品日韩一区二区 | 激情一区二区 | 在线亚洲一区 | 欧美日韩一区二区在线 | 亚洲综合精品 | 国产免费爽爽视频在线观看 | 久久精品在线 | 国产精品久久久久久久久久小说 | 亚洲视频免费 | 亚洲精品成人 | 免费成人在线观看 | 亚州ava | 欧美 日韩 国产 一区 |