Wow, thanks for the speedy reply!

 

Code:

                        try {

                                    getLog().info("testing class loading of 
'org.testng.annotations.Test'");

                                    Class otat = 
Class.forName("org.testng.annotations.Test");

                                    getLog().info(otat.getClass().getName());

                                    getLog().info(otat.getCanonicalName());

                        } catch (ClassNotFoundException e) {

                                    getLog().error(e.getMessage());

                                    e.printStackTrace();

                        }

 

Result:

[INFO] testing class loading of 'org.testng.annotations.Test'

[INFO] java.lang.Class

[INFO] org.testng.annotations.Test

 

===============================================

Suite of Tests

Total tests run: 0, Failures: 0, Skips: 0

===============================================

 

[INFO] 
----------------------------------------------------------------------------

[ERROR] FATAL ERROR

[INFO] 
----------------------------------------------------------------------------

[INFO] Type org.testng.annotations.Test not present

[INFO] 
----------------------------------------------------------------------------

[INFO] Trace

java.lang.TypeNotPresentException: Type org.testng.annotations.Test not present

        at 
sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:98)

        at 
sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107)

        at 
sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)

        at 
sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:351)

        at 
sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:175)

        at 
sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)

...

 

 

Thank you, Michael

 

 

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Sent: Monday, January 16, 2006 7:53 PM
To: [EMAIL PROTECTED]; Michael Fiedler
Cc: Maven Users List
Subject: Re: [testng-users] TestNG from a custom Maven2 MOJO/plugin

 

Hi Michael,

First of all, I just learned something today...  I had never heard of this 
TypeNotPresentException, much less that it was in java.lang!  Its JavaDoc is 
interesting:

* Thrown when an application tries to access a type using a string
 * representing the type's name, but no definition for the type with
 * the specified name can be found.   This exception differs from
 * [EMAIL PROTECTED] ClassNotFoundException} in that 
<tt>ClassNotFoundException</tt> is a 
 * checked exception, whereas this exception is unchecked.

So it *seems* to be similar to ClassNotFoundException, but since we're in the 
bowels of sun.reflect, all the bets are off.  To tell the truth, I'm not quite 
sure what to make of this error without having access to the source of 
CoreReflectionFactory. 

I'll do some digging, but in the meantime, here is a quick experiment:  can you 
do a Class.forName("org.testng.annotations.Test")?

-- 
Cedric



On 1/16/06, Michael Fiedler <[EMAIL PROTECTED]> wrote:

Hi,

 

   I am writing a custom plugin for determining EMMA code coverage of TestNG 
tests.  I am having trouble with the TestNG Test annotation.  TestNG is a 
dependency (see below).  The TestNG version is 4.0, maven version is 2.0.1, jdk 
version is sun jdk1.5.

 

   It feels like a class loader type problem, but org.testng.annotations.Test 
is in the testng-4.0-jdk15.jar.  Since the process was able to invoke the 
TestNG run method (and other classes), is this really a class loader issue?

 

Thank you, Michael

 

 

Pom file:

<project>

            <modelVersion>4.0.0</modelVersion>

...

            <dependencies>

                        <dependency>

                                    <groupId>testNG</groupId>

                                    <artifactId>testng</artifactId>

                                    <version>4.0-jdk15</version>

                                    <scope>compile</scope>

                        </dependency>

...

 

 

code snippet:

...

                        TestNG testng = new TestNG(xmlSuite);

                        testng.setTestJar(jarFilename);

                        testng.setSourcePath(srcPath.getAbsolutePath() + ";" + 
testPath.getAbsolutePath());

                        testng.setOutputDirectory(metadataDir.getAbsolutePath() 
+ "/testNG");

                        testng.setVerbose(1);

                        testng.setGroups("Preferred");

                        testng.run();

                        if(testng.hasFailure() && 
!testng.hasFailureWithinSuccessPercentage()) {

                                    throw new MojoFailureException("Testing 
failure occurance is too high!");

                        }

...

 

 

stacktrace:

[INFO] 
----------------------------------------------------------------------------

[ERROR] FATAL ERROR

[INFO] 
----------------------------------------------------------------------------

[INFO] Type org.testng.annotations.Test not present

[INFO] 
----------------------------------------------------------------------------

[INFO] Trace

java.lang.TypeNotPresentException: Type org.testng.annotations.Test not present

        at 
sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:98)

        at 
sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107)

        at 
sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)

        at 
sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:351)

        at 
sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:175)

        at 
sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)

        at 
sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)

        at java.lang.reflect.Method.declaredAnnotations(Method.java:676)

        at java.lang.reflect.Method.getDeclaredAnnotations(Method.java:669)

        at 
java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:179)

        at 
org.testng.internal.jdk15.JDK15AnnotationFinder.findAnnotation(JDK15AnnotationFinder.java:70)

        at 
org.testng.internal.jdk15.JDK15AnnotationFinder.findAnnotation(JDK15AnnotationFinder.java:92)

        at 
org.testng.internal.TestNGClassFinder.isTestNGClass(TestNGClassFinder.java:158)

        at 
org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:49)

        at org.testng.TestRunner.initMethods(TestRunner.java:256)

        at org.testng.TestRunner.init(TestRunner.java:192)

        at org.testng.TestRunner.init(TestRunner.java:164)

        at org.testng.TestRunner.<init>(TestRunner.java:112)

        at 
org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:325)

        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:160)

        at org.testng.SuiteRunner.run(SuiteRunner.java:126)

        at org.testng.TestNG.run(TestNG.java:292)

        at com.werner.osc.m2plugin.emma.Unit2.test2(Unit2.java:310)

        at com.werner.osc.m2plugin.emma.Unit2.execute(Unit2.java:82)

        at 
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:432)

        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:530)

        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:485)

        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:455)

        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:303)

        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:270)

        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:139)

        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)

        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)

        at org.apache.maven.cli.MavenCli.main(MavenCli.java:249)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:585)

        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)

        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)

        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)

        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

Caused by: java.lang.ClassNotFoundException: org.testng.annotations.Test

        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)

        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

        at java.lang.Class.forName0(Native Method)

        at java.lang.Class.forName(Class.java:242)

        at 
sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:95)

        ... 41 more

 

 




-- 
Cédric

Reply via email to