特殊注意事項,在eclipse下最好採用和運行weblogic一樣的jdk版本進行編譯,否則會出現檔案訪問版本不一致的bug。
1)控制台報The WebLogic Server did not start up properly.
java.io.InvalidClassException: javax.management.MBeanAttributeInfo; local class incompatible: stream classdesc serialVersionUID = 7043855487133450673, local class serialVersionUID = 8644704819898565848
錯誤原因及解決辦法:MBeanAttributeInfo的serialVersionUID的版本控制id不一樣,說明是使用這個被使用的bean被修改過了,很顯然是版本不對;修改startWebLogic.cmd檔案,設定set JAVA_HOME=D:/bea/jdk141_05,使其指向weblogic內建的jdk;重啟startWebLogic.cmd問題消失。
2)錯誤判Deployment descriptor "web.xml" is malform
ed. Check against the DTD: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find
錯誤原因及解決辦法:解析web.xml出現問題,修改OPEN_CMS/webapp/WEB-INF/web.xml檔案;在該檔案的 最上面添加如下內容:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
把weblogic部署到myeclipse下面,啟動weblogic時就會報錯:Deployment descriptor "web.xml" is malformed. Check against the DTD: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'web-app'.
這是web.xml的配置出錯了,不能用以前這個:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app> 這種格式,需要換成:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
</web-app>
這種格式,問題解決。。
重新啟動錯誤消失。
3)錯誤為Deployment descriptor "/WEB-INF/
web.xml" is malformed. Check against the DTD: The content of element type "t
ag" must match "(name,tag-class,tei-class?,body-content?,display-name?,small-ico
n?,large-icon?,description?,variable*,attribute*,example?)". (line 40, column 11
).>
錯誤原因及解決辦法:由於weblogic8在解析xml檔案時,對xml檔案的內容格式要求特別嚴格;必須按照xml格式的要求
及排列順序,所以必須重新組織其內容,一定嚴格要注意順序,如 <servlet>就不能放在<servlet-mapping>後面。
4)錯誤java.lang.SecurityException: Prohibited package name: java.lang
錯誤原因及解決辦法:訪問包可視的方法或變數錯誤;這個錯誤恨少見,一直沒有想明白其中緣由;後來只能採用直接引用jar檔案的法子解決該問題;
i)利用opencms內建的build.xml檔案,運行ant jar命令;產生opencms.jar和webdav.jar兩個檔案
ii)在startWebLogic.cmd添加如下內容,引進上面的2個jar檔案
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%/build/opencms.jar
set CLASSPATH=%CLASSPATH%;%OPEN_CMS%/build/webdav.jar
大家有興趣的可以參考《透視JAVA——反編譯、修補和逆向工程技術》這本書的$4.2章的內容,如果找到更好的解決方案也請來信告知。