2012-02-19 11 views
2

NetBeans 7.1で単体EJBモジュールプロジェクトを単体テストしようとしていますが、1つの警告と初期化エラーが発生しています。私はGlassFishバージョン3.1.1を使用しています。私は誰かがこのタイプの問題に精通し、それを解決する方法について私にいくつかの提案を与えることを望んでいます。EJBモジュールのテストケースの初期化エラー

は、プロジェクト1で、我々はこのようなリモートインタフェースを持っている:

@Stateless 
@LocalBean 
public class CredentialEJB implements CredentialEJBRemote { 

//@Override stuff 

} 

そして私はついに単位でのテスト:2番目のプロジェクトでは、我々はこのようなインターフェイスを実装している

@Remote 
public interface CredentialEJBRemote { 

//Stuff  

} 

private static EJBContainer ec = EJBContainer.createEJBContainer(); 
private static Context ctx = ec.getContext(); 
CredentialEJBRemote instance = (CredentialEJBRemote)ctx.lookup("java:global/classes/CredentialEJB"); 
//Do stuff with instance 

私がユニットテストを実行すると、警告とエラーが表示されます。

警告は次のとおりです。

WARNING: multiple versions of ant detected in path for junit 
jar:file:/C:/Program%20Files/NetBeans%207.1/java/ant/lib/ant.jar!/org/apache/tools/ant/Project.class 
and jar:file:/C:/Program%20Files/glassfish3.1.1/glassfish/modules/ant.jar!/org/apache/tools/ant/Project.class 

は、テストケースでこのエラーが続く:

Testcase: initializationError(trefliq.persistence.CredentialEJBTest): Caused an ERROR 
Absent Code attribute in method that is not native or abstract in class file javax/ejb/embeddable/EJBContainer 
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/ejb/embeddable/EJBContainer 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass( 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791) ClassLoader.java:791) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at java.lang.Class.getDeclaredFields0(Native Method) 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2308) 
    at java.lang.Class.getDeclaredFields(Class.java:1760) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 

これを引き起こす可能性のあるものを任意のアイデアは?

ありがとうございます。

+0

詳細情報を提供するために私の質問が更新されました。 – CodeNameBrandon

答えて

2

このエラーは、Netbeanのjavaee-api-6.0.jarがクラスパス上にあることが原因であることが判明しました。このjarにはメソッド本体が含まれていないため、紛らわしい、まれに見えない "Absent code"エラーがスローされました。 Ant.jarの警告は、GlassFishのmodulesフォルダ内のAnt.jarの名前を変更することで解決されました。 Antの2つの異なるバージョンであるため、NetbeanのAnt.jarと競合していました。

関連する問題