无法运行Java命令

无法运行Java命令,java,Java,我们使用的是Webmethods 8.2,我们正在尝试从linux机器上在SQL server上设置初始数据库。命令格式为 /dbConfigurator.sh-a create-dsqlserver-c storage-v latest-l jdbc:wm:sqlserver://:1433;databaseName=DBNAME“-u DBUSER-p Passwd-au ADMIN-ap Passwd 我们收到以下错误。有人能帮我们破译错误是什么吗。我们感谢您的帮助。谢谢 Exceptio

我们使用的是Webmethods 8.2,我们正在尝试从linux机器上在SQL server上设置初始数据库。命令格式为

/dbConfigurator.sh-a create-dsqlserver-c storage-v latest-l jdbc:wm:sqlserver://: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]
还包括此文件调用的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.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>

xml API

参考文献1:


参考文献2:

首先,您需要确定是处理一个缺少的类,还是处理某个类缺少的类:

您有一个
java.lang.ClassNotFoundException:org.w3c.dom.ElementTraversal
,因此您正在处理缺少的类(一个更简单的场景)。您需要查看JAR通常包含的内容
org.w3c.dom.ElementTraversal
。我喜欢使用,即使您没有使用Maven,因为它是常用Java库的综合索引。要搜索类,请使用
fc:org.w3c.dom.ElementTraversal

你会发现1.401版的
xml API
以及其他版本。搜索结果中的任何常见jar似乎都不在你的类路径中,除非它们在
$DCI\u HOME/./lib/ext/sl53
中。你可以通过在
\runJava
后面加一行来验证这一点,比如
echo$CLASSPATH
并查找上面搜索结果中列出的任何JAR


如果没有,您需要将JAR放在框中的某个位置,并编辑setEnv.sh以包含它(除非您可以将它放在
$DCI_HOME/./lib/ext/sl53
中,它将被自动拾取)当Java虚拟机无法在运行时找到编译时可用的特定类时,Java中的NoClassDefFoundError就会出现

在特定情况下,JAVA找不到xml-api.jar,请将其添加到setEnv.sh,如下所示(查找路径并编辑)


CLASSPATH=“$CLASSPATH:$DCI_HOME/。/lib/xml-api.jar“

这样说有点离题。这应该在SU.please post dbConfigurator.sh上,我刚刚添加了文件调用的dbConfigurator.sh和setEnv.sh。谢谢。您需要在类路径中使用
xmlapi.jar
,实际上,
java
命令运行得很好。但是你的类路径有一些混乱。但很难说的是,NoClassDefFoundError是一个非常模糊的例外,可以在许多不同的场景中提出,其基本原因不同。谢谢David。我不知道如何搜索这个类。大概类路径必须添加到我刚刚附加的setEnv.sh文件中?
<dependency> 
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version> 
</dependency>