Thanks Stefan, nice hack ;-) I didn't know that you can get the Jar file via the class resource URL, but it makes sense.

FYI, I made a useful method out of this (I removed the special - client.jar replacement):

/**
* Returns the path to the JAR file that a certain class is located in. This only works
 * if the classloader loaded this class from a JAR file.
 */
public static final String getJarFileForClass(Class clazz) {
        // eg. /org/apache/derby/drda/NetworkServerControl.class
String classResource = "/" + clazz.getCanonicalName().replace(".", "/") + ".class"; // eg. jar:file:/Users/alex/.m2/repository/org/apache/derby/derbynet/ 10.2.1.6/derbynet-10.2.1.6.jar!/org/apache/derby/drda/ NetworkServerControl.class
        String fullResourceURL = clazz.getResource(classResource).toString();
// eg. /Users/alex/.m2/repository/org/apache/derby/derbynet/10.2.1.6/ derbynet-10.2.1.6.jar
        return fullResourceURL.replaceFirst("jar:file:([^!]+).*", "$1");
}

Regards,
Alex

Am 26.02.2008 um 12:11 schrieb VUB Stefan Seidel:

I am looking for a solution to that too. My workaround was until now to pick specific classes whose JAR files I needed and do

_class.getResource("/" + _class.getCanonicalName().replace(".", "/") + ".class").toString().replaceAll("-client.jar!", ".jar!").replaceFirst("jar:file:([^!]+).*", "$1")

and append this to java.class.path. Kindofa hack though ...

Stefan

Alexander Klimetschek wrote:
I forgot to mention that the unit test runs perfect in Eclipse, because the project created by "mvn eclipse:eclipse" includes all test dependencies as well and the Eclipse jUnit runner puts all of them in the class path for the test. Would be cool to have the Eclipse project and mvn test behave the same without two different configurations.
Alex
Am 25.02.2008 um 20:58 schrieb Alexander Klimetschek:
Hi all,

I have a test case which starts another JVM (a derby database server in network mode). The classpath for the new JVM needs jar files which are defined as test dependencies (derby is available in the form of maven artifacts, and I want to test it against the same derby version against which the actual code is written). The problem is that due to the surefire boot mechanism, it's not sufficient to read the classpath of the JVM in which test is running via System.getProperty("java.class.path").

How can I get access to the classpath of surefire?

Or is there another way to retrieve the path of the jar files defined in the pom from my junit test class?

Regards,
Alex

--
Alexander Klimetschek
[EMAIL PROTECTED]




--
Alexander Klimetschek
[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

--
best regards,

Stefan Seidel
software developer
________________________
VUB Printmedia GmbH
Chopinstraße 4
D-04103 Leipzig
Germany
tel.    +49 (341) 9 60 50 07
fax.    +49 (341) 9 60 50 92
mail.   [EMAIL PROTECTED]
web.    www.vub.de

HRB Köln 24015
UStID DE 122 649 251
GF Dr. Achim Preuss Neudorf,
Dr. Christian Preuss Neudorf

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


--
Alexander Klimetschek
[EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to