How to get junit on classpath?
nicholas+openjdk at nicholaswilliams.net
Tue Jul 30 18:40:39 PDT 2013
DOPE! I totally goofed on this one. I didn't read the whole stack trace. If I had, I would have seen this:
Caused by: java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
JUnit started requiring Hamcrest as of JUnit 4.4, but through JUnit 4.8.2 Hamcrest was bundled in the JUnit JAR (which is a no-no). Starting with JUnit 4.9 (including my 4.11) Hamcrest is no longer bundled (as it should be) and you have to download/attach Hamcrest separately.
Skeptical about my chances, I put hamcrest.jar in $JT_HOME/lib assuming it wouldn't work, and it didn't. I wasn't surprised. I downgraded to the JUnit 4.8.2 JAR and it's working now. Jtreg might want to start looking for hamcrest.jar now, too. JUnit 4.8.2 is three years old.
On Jul 30, 2013, at 5:39 PM, Nick Williams wrote:
> Yep! Those are the ones failing.
> I'm using JUnit 4.11, and the junit.jar DOES contain org.junit.runner.JUnitCore.
> I tried -J-Djunit.jar=/usr/share/java/jtreg/lib/junit.jar in jtreg but it didn't make a difference. I'm using the Makefile to run tests (that's what the JDK readme says to do, and I don't dare venture away from that lol). Looking at the output, the executed process doesn't include the words "junit" anywhere so Makefile apparently isn't using the jtreg startup script.
> I'm not ever sure how I would go about setting the system property if I'm running from the Makefile.
> On Jul 30, 2013, at 5:05 PM, Jonathan Gibbons wrote:
>> FWIW, these are the tests that use JUnit,
>> -- Jon
>> On 07/30/2013 02:43 PM, Nick Williams wrote:
>>> I'm getting this error on many tests in JDK:
>>> java.lang.Exception: No JUnit 4 driver (install junit.jar next to jtreg.jar)
>>> [stack trace]
>>> As you can see, junit.jar is installed next to jtreg.jar:
>>> nickwilliams:jtreg Nicholas$ echo $JT_HOME
>>> nickwilliams:jtreg Nicholas$ cd $JT_HOME
>>> nickwilliams:jtreg Nicholas$ ls -al
>>> total 64
>>> drwxr-xr-x 12 root wheel 408 Jul 30 12:29 .
>>> drwxr-xr-x 15 root wheel 510 Jul 30 12:29 ..
>>> -rw-r--r-- 1 root wheel 994 Jul 30 12:29 COPYRIGHT
>>> -rw-r--r-- 1 root wheel 19241 Jul 30 12:29 LICENSE
>>> -rw-r--r-- 1 root wheel 3790 Jul 30 12:29 README
>>> drwxr-xr-x 3 root wheel 102 Jul 30 12:29 doc
>>> drwxr-xr-x 4 root wheel 136 Jul 30 12:29 legal
>>> drwxr-xr-x 7 root wheel 238 Jul 30 12:29 lib
>>> drwxr-xr-x 3 root wheel 102 Jul 30 12:29 linux
>>> -rw-r--r-- 1 root wheel 73 Jul 30 12:29 release
>>> drwxr-xr-x 3 root wheel 102 Jul 30 12:29 solaris
>>> drwxr-xr-x 3 root wheel 102 Jul 30 12:29 win32
>>> nickwilliams:jtreg Nicholas$ ls -al lib
>>> total 13200
>>> drwxr-xr-x 7 root wheel 238 Jul 30 12:29 .
>>> drwxr-xr-x 12 root wheel 408 Jul 30 12:29 ..
>>> -rw-r-xr-x@ 1 root wheel 4613089 Jul 30 12:29 javatest.jar
>>> -rw-r--r--@ 1 root wheel 508396 Jul 30 12:29 jh.jar
>>> -r--r--r-- 1 root wheel 542604 Jul 30 12:29 jtreg.jar
>>> -rw-r--r--@ 1 root wheel 245039 Jul 30 12:29 junit.jar
>>> -rw-r--r--@ 1 root wheel 835600 Jul 30 12:29 testng.jar
>>> I even tried setting the CLASSPATH system variable, to no avail. Made no difference one way or the other.
>>> nickwilliams:test Nicholas$ echo $CLASSPATH
>>> I'm running JDK8 tests using Makefile.
More information about the jtreg-use