2013-07-23 213 views
0

我們正在使用Webmethods 8.2,我們正試圖在Linux服務器上設置SQL服務器上的初始數據庫。命令格式是,無法運行Java命令

./dbConfigurator.sh -a create -d sqlserver -c storage -v latest -l jdbc:wm:sqlserver://<sqlserverip>:1433;databaseName=DBNAME" -u DBUSER -p Passwd -au ADMIN -ap Passwd

我們正在以下錯誤。有人可以破譯我們的錯誤是什麼。我們感謝任何幫助,我們可以得到。謝謝!

Exception in thread "main" java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at org.apache.xerces.parsers.AbstractDOMParser.startDocument(Unknown Source) 
    at org.apache.xerces.impl.xs.XMLSchemaValidator.startDocument(Unknown Source) 
    at org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(Unknown Source) 
    at org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(Unknown Source) 
    at org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at com.webmethods.common.cdbc.engine.definition.ComponentStore.initialize(ComponentStore.java:128) 
    at com.webmethods.common.cdbc.engine.definition.ComponentStore.instance(ComponentStore.java:98) 
    at com.webmethods.common.cdbc.engine.definition.DatabaseDefinitionManager.<init>(DatabaseDefinitionManager.java:42) 
    at com.webmethods.common.cdbc.engine.definition.DatabaseDefinitionManager.instance(DatabaseDefinitionManager.java:49) 
    at com.webmethods.common.cdbc.install.DatabaseComponentInstaller.isValidComponentName(DatabaseComponentInstaller.java:258) 
    at com.webmethods.common.cdbc.install.DatabaseComponentInstaller.validateDCIParams(DatabaseComponentInstaller.java:1021) 
    at com.webmethods.common.cdbc.install.DatabaseComponentInstaller.checkMissingArgsAndValidate(DatabaseComponentInstaller.java:148) 
    at com.webmethods.common.cdbc.install.DatabaseComponentInstaller.execute(DatabaseComponentInstaller.java:341) 
    at com.webmethods.common.cdbc.client.CommandLineClient.main(CommandLineClient.java:19) 
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 31 more[/code] 

這裏是我的dbConfigurator.sh

#!/bin/sh 
# set env for CDC 

ENV_PATH=/opt/softwareag/DB/common/db/bin/setEnv.sh 
export ENV_PATH 
source=$ENV_PATH 
. ./setEnv.sh 

if [ -z "$JAVA_HOME" ]; then 
echo "The environment variable JAVA_HOME must be set" 
    echo "Can't run the database component installer." 
    exit 
fi 

if [ -z "$CDBS_HOME" ]; then 
    echo "The environment variable CDBS_HOME must be set." 
    echo "Can't run the database component installer." 
    exit 
fi 

if [ -z "$DCI_HOME" ]; then 
    echo "The environment variable DCI_HOME must be set." 
    echo "Can't run the database component installer." 
    exit 
fi 

#runJava 

RUN="$JAVA_HOME/bin/java" 

$RUN $JAVA_OPTS com.webmethods.common.cdbc.client.CommandLineClient "[email protected]" 

而且setEnv.sh此文件調用,

#!/bin/sh 
# set env for CDC 

JAVA_HOME=/opt/softwareag/DB/jvm/jvm160 
DCI_HOME=/opt/softwareag/DB/common/db 
CDBS_HOME=/opt/softwareag/DB/common/db 

#exportStartHeap 


DCI_START_HEAP="${DCI_START_HEAP:-10}";export DCI_START_HEAP 

DCI_MAX_HEAP="${DCI_MAX_HEAP:-512}";export DCI_MAX_HEAP 

#exportJavaOpts 

JAVA_OPTS="$JAVA_OPTS -DCDBS.home.path=$CDBS_HOME" 
JAVA_OPTS="$JAVA_OPTS -DDCI.home.path=$DCI_HOME" 
JAVA_OPTS="$JAVA_OPTS -Dlog.dir=$DCI_HOME/logs" 
JAVA_OPTS="$JAVA_OPTS -DtermOutOn=true" 
JAVA_OPTS="$JAVA_OPTS -DspoolOn=true" 

##==================To enable debug, change this property to 'DEBUG'========== 
JAVA_OPTS="$JAVA_OPTS -DlogLevel=INFO" 
##============================================================================ 

JAVA_OPTS="$JAVA_OPTS -Xms${DCI_START_HEAP}m" 
JAVA_OPTS="$JAVA_OPTS -Xmx${DCI_MAX_HEAP}m" 
JAVA_OPTS="$JAVA_OPTS -Xss256k" 

export JAVA_OPTS 

##exportClassPath 
CLASSPATH="$CLASSPATH:$DCI_HOME" 
CLASSPATH="$CLASSPATH:$DCI_HOME/lib/wm-cdc-client.jar" 
for file in $DCI_HOME%/lib/wm-cdc-client_* 
do 
    CLASSPATH=${CLASSPATH}:$file 
done 
CLASSPATH="$CLASSPATH:$DCI_HOME/lib/CDC_PELP_ja_Messages-ALL-Any.jar" 
CLASSPATH="$CLASSPATH:$DCI_HOME/lib/CDC_PELP_ar_Messages-ALL-Any.jar" 
CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/wm-cdc-core.jar" 
CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/ext/jargs.jar" 
CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/wm-g11nutils.jar" 
CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/ext/log4j.jar" 
CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/ext/derby.jar" 
CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/wm-caf-common.jar" 
for file in $DCI_HOME/../lib/ext/sl53* 
do 
    CLASSPATH=${CLASSPATH}:$file 
done 
CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/ext/xercesImpl.jar" 
CLASSPATH="$CLASSPATH:$JAVA_HOME/lib/tools.jar" 
CLASSPATH="$CLASSPATH:$JAVA_HOME/jre/lib/charsets.jar" 
export CLASSPATH 
+0

有點偏離主題的SO。這應該在SU上。 –

+0

請發佈dbConfigurator.sh以及 – shevchyk

+0

我剛剛添加了dbConfigurator.sh和setEnv.sh這兩個文件調用。謝謝。 – Lego

回答

2

的NoClassDefFoundError在Java中正值當Java虛擬機無法找到在運行時一個特定的類在編譯時可用。

你的具體情況JAVA找不到的xml-apis.jar,將其添加到setEnv.sh像這樣(尋找路徑和編輯)

CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/xml-apis.jar"

0
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 

想必你的classpath錯過一些庫org/w3c/dom/ElementTraversal

+0

謝謝大衛。我不知道如何搜索這個課程。據推測,班級路徑必須添加到我剛剛附加的setEnv.sh文件中? – Lego

0

根據一個職位,他們有這個問題:

我有一個問題,當我嘗試使用版本2.0.2,但發現,當我 恢復到1.4.01版本和一切工作再次。

如果你使用的是Maven:

<dependency> 
    <groupId>xml-apis</groupId> 
    <artifactId>xml-apis</artifactId> 
    <version>1.4.01</version> 
</dependency> 

您也可以下載必要的庫,如果你根本就沒有它:

http://www.jarfinder.com/index.php/java/info/org.w3c.dom.ElementTraversal

參考1:Eclipse java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

參考2:http://www.coderanch.com/t/534171/XML/org-dom-ElementTraversal

0

首先,你需要確定你是否正在處理一個缺失類,或某些類的丟失類:

http://javarevisited.blogspot.com/2011/06/noclassdeffounderror-exception-in.html

你已經有了一個java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal,所以你有丟失類交易(一個更簡單的場景)。您需要查看JAR通常包含的內容org.w3c.dom.ElementTraversal。即使您不使用Maven,我也喜歡使用http://search.maven.org/,僅僅是因爲它是一個常用Java庫的綜合索引。要搜索一個類,使用fc:org.w3c.dom.ElementTraversal

http://search.maven.org/#search%7Cga%7C1%7Cfc%3Aorg.w3c.dom.ElementTraversal

你會發現在其他的1.401版本的xml-apis。它似乎不像搜索結果中的任何常見JAR都位於CLASSPATH中,除非它們位於$DCI_HOME/../lib/ext/sl53之內。您可以在#runJava(如echo $CLASSPATH)後面加上一行來驗證此內容,並查找上述搜索結果中列出的任何JAR。

如果他們不在那裏,你需要把JAR放在盒子的某個地方並編輯setEnv。sh包括它(除非你可以把它放在$DCI_HOME/../lib/ext/sl53的地方自動拾取)。