You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by vo...@allianz.de on 2004/01/19 12:04:33 UTC
fails when using JDK 1.4.2 but works with JDK 1.4.1?
Hello,
I have the following directory structure:
c:\paramconv\
c:\paramconv\build
c:\paramconv\src
The build file which can be found below works fine with JDK 1.4.1 and ant
1.5.3 or 1.6.0.
<project name="paramconv" default="compile" basedir=".">
<property name="src" value="src" />
<property name="build" value="build" />
<property name="dist" value="dist" />
<property name="pack" value="pack" />
<property name="test.reports" value="reports" />
<property name="debug" value="true" />
<path id="project.class.path">
<pathelement path="${java.class.path}/" />
</path>
<path id="test.classpath">
<pathelement path="${java.class.path}/" />
<pathelement location="${build}" />
</path>
<target name="buildinit">
<mkdir dir="${build}" />
<copy file="resources/libraries/dflib.dll" todir="${build}" />
</target>
<target name="test" depends="compile" description="regression test -
reports will be printed on the console">
<junit fork="yes" printsummary="no" haltonfailure="no">
<batchtest fork="yes" todir="${test.reports}" >
<fileset dir="${build}">
<include name="**/*Test.class" />
</fileset>
</batchtest>
<formatter type="plain" usefile="false" />
<classpath refid="test.classpath" />
</junit>
</target>
</project>
However, after switching to JDK 1.4.2, i couldn't run the test any more.
After reading through the archive it seems the only way to solve this is to
create
c:\paramconv\jars and place junit.jar, ant-junit.jar and log4j-1.2.8.jar
there. Moreover, I had to create an extra taskdef and disallow forking.
<taskdef name="junit" classname
="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"/>
<target name="test" depends="compile" description="regression test -
reports will be printed on the console">
<junit fork="no" printsummary="no" haltonfailure="no">
<batchtest fork="no" todir="${test.reports}" >
<fileset dir="${build}">
<include name="**/*Test.class" />
</fileset>
</batchtest>
<formatter type="plain" usefile="false" />
<classpath refid="test.classpath" />
</junit>
</target>
Now, the tests are found (though I do not really like that solution).
However, the classes which are tested load a library dflib.dll from either
c:\winnt\dflib.dll or the local directory (which is c:\paramconv\build)
when the test is run. And this library can now be loaded during the first
test. But when the second test starts, this fails with the following
exception:
[junit] java.lang.UnsatisfiedLinkError: Native Library C:
\WINNT\dflib.dll already loaded in another classloader
[junit] at
java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1525)
[junit] at
java.lang.ClassLoader.loadLibrary(ClassLoader.java:1485)
[junit] at java.lang.Runtime.loadLibrary0(Runtime.java:788)
[junit] at java.lang.System.loadLibrary(System.java:834)
[junit] at lib.dflib.<clinit>(dflib.java:48)
....
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[junit] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[junit] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[junit] at java.lang.reflect.Method.invoke(Method.java:324)
[junit] at junit.framework.TestCase.runTest(TestCase.java:154)
[junit] at junit.framework.TestCase.runBare(TestCase.java:127)
[junit] at
junit.framework.TestResult$1.protect(TestResult.java:106)
[junit] at
junit.framework.TestResult.runProtected(TestResult.java:124)
[junit] at junit.framework.TestResult.run(TestResult.java:109)
[junit] at junit.framework.TestCase.run(TestCase.java:118)
[junit] at junit.framework.TestSuite.runTest(TestSuite.java:208)
[junit] at junit.framework.TestSuite.run(TestSuite.java:203)
[junit] at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:326)
[junit] at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeInVM(JUnitTask.java:991)
[junit] at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:663)
[junit] at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:637)
[junit] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:306)
[junit] at org.apache.tools.ant.Task.perform(Task.java:401)
[junit] at org.apache.tools.ant.Target.execute(Target.java:338)
[junit] at
org.apache.tools.ant.Target.performTasks(Target.java:365)
[junit] at
org.apache.tools.ant.Project.executeTarget(Project.java:1237)
[junit] at
org.apache.tools.ant.Project.executeTargets(Project.java:1094)
[junit] at org.apache.tools.ant.Main.runBuild(Main.java:669)
[junit] at org.apache.tools.ant.Main.startAnt(Main.java:220)
[junit] at
org.apache.tools.ant.launch.Launcher.run(Launcher.java:215)
[junit] at
org.apache.tools.ant.launch.Launcher.main(Launcher.java:90)
[junit] java.lang.UnsatisfiedLinkError: Can't load library: C:
\paramconv\dflib.dll
[junit] at
java.lang.ClassLoader.loadLibrary(ClassLoader.java:1459)
[junit] at java.lang.Runtime.load0(Runtime.java:737)
[junit] at java.lang.System.load(System.java:811)
[junit] at lib.dflib.<clinit>(dflib.java:62)
...
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[junit] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[junit] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[junit] at java.lang.reflect.Method.invoke(Method.java:324)
[junit] at junit.framework.TestCase.runTest(TestCase.java:154)
[junit] at junit.framework.TestCase.runBare(TestCase.java:127)
[junit] at
junit.framework.TestResult$1.protect(TestResult.java:106)
[junit] at
junit.framework.TestResult.runProtected(TestResult.java:124)
[junit] at junit.framework.TestResult.run(TestResult.java:109)
[junit] at junit.framework.TestCase.run(TestCase.java:118)
[junit] at junit.framework.TestSuite.runTest(TestSuite.java:208)
[junit] at junit.framework.TestSuite.run(TestSuite.java:203)
[junit] at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:326)
[junit] at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeInVM(JUnitTask.java:991)
[junit] at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:663)
[junit] at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:637)
[junit] at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:306)
[junit] at org.apache.tools.ant.Task.perform(Task.java:401)
[junit] at org.apache.tools.ant.Target.execute(Target.java:338)
[junit] at
org.apache.tools.ant.Target.performTasks(Target.java:365)
[junit] at
org.apache.tools.ant.Project.executeTarget(Project.java:1237)
[junit] at
org.apache.tools.ant.Project.executeTargets(Project.java:1094)
[junit] at org.apache.tools.ant.Main.runBuild(Main.java:669)
[junit] at org.apache.tools.ant.Main.startAnt(Main.java:220)
[junit] at
org.apache.tools.ant.launch.Launcher.run(Launcher.java:215)
[junit] at
org.apache.tools.ant.launch.Launcher.main(Launcher.java:90)
[junit] Couldn't find statistics library. The library is named either
dflib.dll or dflib.so,
[junit] depending on your operating system. Please include the library
file into your
[junit] system path or the working directory from which you start ...
Any ideas? Also, I would be interested why the setup which worked
previously (JDK 1.4.1) does not work anymore now.
Cheers,
Volker Augustin
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org