[英]Unable to run Java command
我們正在使用Webmethods 8.2,我們正在嘗試從Linux機器上在SQL服務器上設置初始數據庫。 命令格式是,
./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 "$@"
還調用此文件調用的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
當Java虛擬機無法在運行時找到編譯時可用的特定類時,Java中會出現NoClassDefFoundError 。
在你的特殊情況下,JAVA找不到xml-apis.jar,像這樣將它添加到setEnv.sh(找到路徑並編輯)
CLASSPATH="$CLASSPATH:$DCI_HOME/../lib/xml-apis.jar"
java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
大概你的類路徑錯過了一些庫org/w3c/dom/ElementTraversal
。
根據一篇文章,他們有這個問題:
我嘗試使用版本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
首先,您需要確定是否正在處理缺少的類或某個類缺少的類:
http://javarevisited.blogspot.com/2011/06/noclassdeffounderror-exception-in.html
你有一個java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
,所以你正在處理一個缺少的類(一個更簡單的場景)。 您需要查看JAR通常包含的內容org.w3c.dom.ElementTraversal
。 我喜歡使用http://search.maven.org/ ,即使你沒有使用Maven,只是因為它是常用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
之后#runJava
一行來#runJava
例如echo $CLASSPATH
並查找上面搜索結果中列出的任何JAR。
如果它們不在那里,你需要將JAR放在盒子的某個位置並編輯setEnv.sh以包含它(除非你可以將它放在$DCI_HOME/../lib/ext/sl53
,它會被自動拾取) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.