嘗試運行Java示例應用程序時,出現異常異常。線程「main」中的異常java.lang.NoClassDefFoundError
下面是從控制檯堆棧跟蹤:
$./init-og-examples-db.sh
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/Task
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.Task
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/Task
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.Task
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
### Adding example data
Error: Could not find or load main class com.opengamma.examples.tool.ExampleDatabasePopulator
### Completed
我是比較新的Java,所以我不知道爲什麼類沒有被發現,因爲類確實存在:
[email protected]:~/work/dev/java/OG-Platform/projects/OG-Examples/scripts$ find ../../.. -type f -name 'ExampleDatabasePopulator.*'
../../../projects/OG-Examples/bin/com/opengamma/examples/tool/ExampleDatabasePopulator.class
../../../projects/OG-Examples/build/classes/com/opengamma/examples/tool/ExampleDatabasePopulator.class
../../../projects/OG-Examples/src/main/java/com/opengamma/examples/tool/ExampleDatabasePopulator.java
../../../projects/OG-BloombergExample/bin/com/opengamma/bloombergexample/tool/ExampleDatabasePopulator.class
../../../projects/OG-BloombergExample/build/classes/com/opengamma/bloombergexample/tool/ExampleDatabasePopulator.class
../../../projects/OG-BloombergExample/src/main/java/com/opengamma/bloombergexample/tool/ExampleDatabasePopulator.java
任何人都可以幫我解決這個問題嗎?
[更新]
我也做了以下內容:
取出並手動安裝螞蟻在我的機器上搜索含有該.jar文件
2.字任務(試圖找到實現Task類的文件)
grep -lri Task --include=*.jar /usr/local/apache-ant-1.9.1
/usr/local/apache-ant-1.9.1/lib/ant-netrexx.jar
/usr/local/apache-ant-1.9.1/lib/ant-jdepend.jar
/usr/local/apache-ant-1.9.1/lib/ant-javamail.jar
/usr/local/apache-ant-1.9.1/lib/ant-junit.jar
/usr/local/apache-ant-1.9.1/lib/ant-jsch.jar
/usr/local/apache-ant-1.9.1/lib/ant-apache-xalan2.jar
/usr/local/apache-ant-1.9.1/lib/ant-junit4.jar
/usr/local/apache-ant-1.9.1/lib/ant-jmf.jar
/usr/local/apache-ant-1.9.1/lib/ant.jar
/usr/local/apache-ant-1.9.1/lib/ant-testutil.jar
/usr/local/apache-ant-1.9.1/lib/ant-jai.jar
/usr/local/apache-ant-1.9.1/lib/ant-commons-net.jar
/usr/local/apache-ant-1.9.1/lib/ant-antlr.jar
/usr/local/apache-ant-1.9.1/lib/ant-swing.jar
添加了相關的文件夾到我的CLASSPATH
出口 CLASSPATH = $ CLASSPATH:/usr/local/apache-ant-1.9.1/etc:在/ usr /本地/ Apache的螞蟻-1.9.1/lib目錄
4.確信,我有兩個JAVA_HOME
和ANT_HOME
正確設置
echo $ANT_HOME
/usr/local/apache-ant-1.9.1
echo $JAVA_HOME
/usr/lib/jvm/java-7-oracle/jre
儘管如此,我仍然得到與以前完全相同的錯誤(即堆棧跟蹤與上述相同)。
[第二更新]
這是我運行該腳本文件的內容:
#!/bin/sh
if [ ! -z "$JAVA_HOME" ]; then
JAVA=$JAVA_HOME/bin/java
elif [ -x /opt/jdk1.6.0_16/bin/java ]; then
JAVA=/opt/jdk1.6.0_16/bin/java
else
# No JAVA_HOME, try to find java in the path
JAVA=`which java 2>/dev/null`
if [ ! -x "$JAVA" ]; then
# No java executable in the path either
echo "Error: Cannot find a JRE or JDK. Please set JAVA_HOME"
exit 1
fi
fi
if [ "`basename $0`" = "init-og-examples-db.sh" ] ; then
cd `dirname $0`/.. #PLAT-1527
fi
CLASSPATH=config:og-examples.jar
for FILE in `ls -1 lib/*` ; do
CLASSPATH=$CLASSPATH:$FILE
done
echo "### Creating empty database"
$JAVA -cp "$CLASSPATH" \
-Dlogback.configurationFile=jetty-logback.xml \
com.opengamma.util.test.DbTool \
-jdbcUrl jdbc:hsqldb:file:install/db/hsqldb/example-db \
-database og-financial \
-user "OpenGamma" \
-password "OpenGamma" \
-drop true \
-create true \
-createtables true \
-dbscriptbasedir .
$JAVA -cp "$CLASSPATH" \
-Dlogback.configurationFile=jetty-logback.xml \
com.opengamma.util.test.DbTool \
-jdbcUrl jdbc:hsqldb:file:temp/hsqldb/og-fin-user \
-database og-financial \
-user "OpenGamma" \
-password "OpenGamma" \
-drop true \
-create true \
-createtables true \
-dbscriptbasedir .
echo "### Adding example data"
$JAVA -cp "$CLASSPATH" \
-Xms512M \
-Xmx1024M \
-Dlogback.configurationFile=jetty-logback.xml \
com.opengamma.examples.tool.ExampleDatabasePopulator
echo "### Completed"
您沒有包含在類路徑中的類'org.apache.tools.ant.Task'的'.jar'文件。 –
@BrianRoach:請參閱我的更新後的問題 –
對於查找jar,我建議您訪問http://www.findjar.com/index.x –