我安装的是Junit4.
写好了testcase,在Eclipse里是可以执行的,但是手工执行的时候,出错如下:java org.junit.runner.JUnitCore TestSmokeTestForServer
Exception in thread "main" java.lang.NoClassDefFoundError: TestSmokeTestForServer (wrong name: com/sonyericsson/binaryreposystem/client/TestSmokeTestForServer)
        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:5
        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 java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at org.junit.runner.JUnitCore.runMain(JUnitCore.java:89)
        at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:53)
        at org.junit.runner.JUnitCore.main(JUnitCore.java:45)classpath里有
echo $CLASSPATH
/opt/semc-eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/junit.jar:/home/CORPUSERS/28849869/c2dSrc/tools/c2d/WebServer/BinaryRepositoryClient/bin/com/sonyericsson/binaryreposystem/client/大家帮我看看吧,谢谢!

解决方案 »

  1.   

    你写的测试没有找到TestSmokeTestForServer这个类,需要查看CLASSPATH是否包括当下路径,同时查一下TestSmokeTestForServer这个类的完整限定名 是不是org.junit.runner.JUnitCore.TestSmokeTestForServer
    如果那样执行java org.junit.runner.JUnitCore.TestSmokeTestForServer
      

  2.   

    temp/com/sonyericsson/binaryreposystem/client/TestSmokeTestForServercd temptemp/java com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer
      

  3.   

    classpath错了吧,
    假设com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer类位于
    /home/CORPUSERS/28849869/c2dSrc/tools/c2d/WebServer/BinaryRepositoryClient/bin/com/sonyericsson/binaryreposystem/client/TestSmokeTestForServer.class
    那么classpath应该设置为:/opt/semc-eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/junit.jar:/home/CORPUSERS/28849869/c2dSrc/tools/c2d/WebServer/BinaryRepositoryClient/bin
      

  4.   

    你好,CLASSPATH环境变量有这个路径
    /home/CORPUSERS/28849869/c2dSrc/tools/c2d/WebServer/BinaryRepositoryClient/bin/com/sonyericsson/binaryreposystem/client/
    这个路径放的都是编译好的.class文件,其中就有TestSmokeTestForServer.class这个class的包名是com.sonyericsson.binaryreposystem.client
    我试过执行:
    java org.junit.runner.JUnitCore com.sonyericsson.binaryreposystem.client.TestSmokeTestForServerJUnit version 4.8.1
    Could not find class: com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer
    Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing到底什么地方出了问题呢?
      

  5.   

    你还是没理解,classpath是
    /home/CORPUSERS/28849869/c2dSrc/tools/c2d/WebServer/BinaryRepositoryClient/bin/com/sonyericsson/binaryreposystem/client/
      

  6.   

    你好,我已经照你说的 设置了CLASSPATH到bin一级的目录,但是执行还是有问题。
    echo $CLASSPATH
    /opt/semc-eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/junit.jar:/home/CORPUSERS/28849869/c2dSrc/tools/c2d/WebServer/BinaryRepositoryClient/bin/com/sonyericsson/binaryreposystem/client/java org.junit.runner.JUnitCore com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer
    JUnit version 4.8.1
    Could not find class: com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer
    Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribingUbuntu下Classpath直接是用:分割把?
      

  7.   

    你好,我已经照你说的 设置了CLASSPATH到bin一级的目录,但是执行还是有问题。
    echo $CLASSPATH
    /opt/semc-eclipse/plugins/org.junit_4.8.1.v4_8_1_v20100427-1100/junit.jar:/home/CORPUSERS/28849869/c2dSrc/tools/c2d/WebServer/BinaryRepositoryClient/bin/java org.junit.runner.JUnitCore com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer
    JUnit version 4.8.1
    Could not find class: com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer
    Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribingUbuntu下Classpath直接是用:分割把?
      

  8.   

    org.hamcrest.SelfDescribing
    一样的,你编译的时候classpath怎么设置的,现在照旧啊!!!
      

  9.   

    编译是Eclipse编译的,我没有设classpath.编译出来的.class文件位于
    /home/CORPUSERS/28849869/c2dSrc/tools/c2d/WebServer/BinaryRepositoryClient/bin/com/sonyericsson/binaryreposystem/client/
    目录。
    到底是怎么回事呢
      

  10.   

    eclipse的project java build path,看看里面的lib,统统放到classpath另外,.class文件,仔细看上面删除线,然后领悟一下。难道,你要为这些不同的class设置N个classpath??!!
    com.sonyericsson.binaryreposystem.client.Xxxx
    com.sonyericsson.binaryreposystem.server.Yyyy
    com.sonyericsson.binaryreposystem.server.something.Zzzz
    com.sonyericsson.binaryreposystem.common.Aaaa
    .....
      

  11.   

    我又改了以下,写了一个ant build.xml来执行Junt,如下:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <project default="test" name="Test TestSmokeTestForServer">
        <import file="../BinaryRepositoryWS/build.xml"/>
        <property name="TESTDIR" value="."/>
        <property name="TEST-DEBUG" value="${TESTDIR}/ant-bin-debug"/>
        <property name="REPORTS-DIR" location="reports"/>
        <property name="LIB" value="lib" />
        <property name="SRC" value="src"/>
        <property name="JAVA_COMPILER_VERSION" value="1.6"/>
        <property name="DEBUG" value="false" />
        <property name="BUILD-DIR" value="ant-bin"/>
        <target name="test" depends="compile-test, run-test" />
        <target name="compile-test" depends="clean, mkdirs, compile"/>
        <target name="compile" depends="mkdirs">
        <javac target="${JAVA_COMPILER_VERSION}" srcdir="${SRC}" destdir="${BUILD-DIR}" debug="${DEBUG}">
        <classpath refid="webservice-classpath"/>
        <classpath refid="webservice-test-classpath"/>
        <classpath location="${BUILD-DIR}"/>
        </javac>
        </target>
        <target name="clean">
        <delete dir="${TEST-DEBUG}" />
        <delete dir="${REPORTS-DIR}" />
        <delete dir="${BUILD-DIR}"/>
        </target>
        <target name="mkdirs">
        <mkdir dir="${TEST-DEBUG}"/>
        <mkdir dir="${REPORTS-DIR}"/>
        <mkdir dir="${BUILD-DIR}"/>
        </target>
        <target name="run-test" depends="">
            <junit fork="yes" forkmode="perTest" printsummary="yes" haltonfailure="no" haltonerror="false" showoutput="true" >
        <classpath location="${TEST-DEBUG}"/>
        <classpath location="${BUILD-DIR}"/>
        <classpath location="${LIB}"/>
        <formatter type="xml" />
        <test name= "com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer" />
            </junit>
        </target>
    </project>
    但是还是报错
      <testcase classname="com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer" name="initializationError" time="0.0060">
        <error message="org/hamcrest/SelfDescribing" type="java.lang.NoClassDefFoundError">java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    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 java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    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)
    </error>请大家帮我看看,谢谢!
      

  12.   

    我又改了一下,写了一个ant build.xml来执行这个Junit测试,如下:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <project default="test" name="Test TestSmokeTestForServer">
        <import file="../BinaryRepositoryWS/build.xml"/>
        <property name="TESTDIR" value="."/>
        <property name="TEST-DEBUG" value="${TESTDIR}/ant-bin-debug"/>
        <property name="REPORTS-DIR" location="reports"/>
        <property name="LIB" value="lib" />
        <property name="SRC" value="src"/>
        <property name="JAVA_COMPILER_VERSION" value="1.6"/>
        <property name="DEBUG" value="false" />
        <property name="BUILD-DIR" value="ant-bin"/>
        <target name="test" depends="compile-test, run-test" />
        <target name="compile-test" depends="clean, mkdirs, compile"/>
        <target name="compile" depends="mkdirs">
        <javac target="${JAVA_COMPILER_VERSION}" srcdir="${SRC}" destdir="${BUILD-DIR}" debug="${DEBUG}">
        <classpath refid="webservice-classpath"/>
        <classpath refid="webservice-test-classpath"/>
        <classpath location="${BUILD-DIR}"/>
        </javac>
        </target>
        <target name="clean">
        <delete dir="${TEST-DEBUG}" />
        <delete dir="${REPORTS-DIR}" />
        <delete dir="${BUILD-DIR}"/>
        </target>
        <target name="mkdirs">
        <mkdir dir="${TEST-DEBUG}"/>
        <mkdir dir="${REPORTS-DIR}"/>
        <mkdir dir="${BUILD-DIR}"/>
        </target>
        <target name="run-test" depends="">
            <junit fork="yes" forkmode="perTest" printsummary="yes" haltonfailure="no" haltonerror="false" showoutput="true" >
        <classpath location="${TEST-DEBUG}"/>
        <classpath location="${BUILD-DIR}"/>
        <classpath location="${LIB}"/>
        <formatter type="xml" />
        <test name= "com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer" />
            </junit>
        </target>
    </project>
    但是还是报错,如下:
      <testcase classname="com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer" name="initializationError" time="0.0060">
        <error message="org/hamcrest/SelfDescribing" type="java.lang.NoClassDefFoundError">java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    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 java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    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)
    </error>请大家帮我看一下。谢谢!
      

  13.   

    我又改了一下,写了一个ant build.xml来执行这个Junit测试,如下:
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <project default="test" name="Test TestSmokeTestForServer">
        <import file="../BinaryRepositoryWS/build.xml"/>
        <property name="TESTDIR" value="."/>
        <property name="TEST-DEBUG" value="${TESTDIR}/ant-bin-debug"/>
        <property name="REPORTS-DIR" location="reports"/>
        <property name="LIB" value="lib" />
        <property name="SRC" value="src"/>
        <property name="JAVA_COMPILER_VERSION" value="1.6"/>
        <property name="DEBUG" value="false" />
        <property name="BUILD-DIR" value="ant-bin"/>
        <target name="test" depends="compile-test, run-test" />
        <target name="compile-test" depends="clean, mkdirs, compile"/>
        <target name="compile" depends="mkdirs">
        <javac target="${JAVA_COMPILER_VERSION}" srcdir="${SRC}" destdir="${BUILD-DIR}" debug="${DEBUG}">
        <classpath refid="webservice-classpath"/>
        <classpath refid="webservice-test-classpath"/>
        <classpath location="${BUILD-DIR}"/>
        </javac>
        </target>
        <target name="clean">
        <delete dir="${TEST-DEBUG}" />
        <delete dir="${REPORTS-DIR}" />
        <delete dir="${BUILD-DIR}"/>
        </target>
        <target name="mkdirs">
        <mkdir dir="${TEST-DEBUG}"/>
        <mkdir dir="${REPORTS-DIR}"/>
        <mkdir dir="${BUILD-DIR}"/>
        </target>
        <target name="run-test" depends="">
            <junit fork="yes" forkmode="perTest" printsummary="yes" haltonfailure="no" haltonerror="false" showoutput="true" >
        <classpath location="${TEST-DEBUG}"/>
        <classpath location="${BUILD-DIR}"/>
        <classpath location="${LIB}"/>
        <formatter type="xml" />
        <test name= "com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer" />
            </junit>
        </target>
    </project>
    但是还是报错,如下:
      <testcase classname="com.sonyericsson.binaryreposystem.client.TestSmokeTestForServer" name="initializationError" time="0.0060">
        <error message="org/hamcrest/SelfDescribing" type="java.lang.NoClassDefFoundError">java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    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 java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
    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)
    </error>请大家帮我看一下。谢谢!
      

  14.   

    stackoverflow上有人遇到和你一样的问题,你到那上面去搜一下