2012-04-05 60 views
1

Eclipseからプログラムを実行しているときは正常に動作します。Java - ClassFormatErrorの原因

のEclipseの外にそれを実行している私はこれを取得:

java.lang.ClassFormatError: Duplicate method name&signature in class file [Class Name] 

問題のクラスがインタフェースから実装し、プログラムがエラーで述べたクラスから拡張し、他のいくつかのクラスがあります。

この原因とはどのように解決されましたか?

+1

で次の設定を置き換えてきましたクラス内で同じ名前と署名で – joshuahealy

+0

あなたはクラスコードを投稿できますか?それは助けるかもしれない。 –

+2

@appclay Eclipseはそれを検出しませんか? –

答えて

2

Java仮想マシンがクラスファイルを読み込もうとしたときに、そのファイルが不正な形式であると判断した場合、またはクラスファイルとして解釈できない場合にスローされます。

http://docs.oracle.com/javase/7/docs/api/java/lang/ClassFormatError.html

のJavadocはあなたの友達です。

+0

WTH?世界ではクラスファイルではないと思うでしょうか? – WildBamaBoy

+0

これは、ファイルのエンコードと同じように愚かである可能性があります。あなたは「Eclipseの外で実行している」と言った。ファイルエンコーディングを切り替えた別のテキストエディタからファイルを保存し直しましたか?それはおそらくUTF8である必要があります。 –

+0

私はしませんでした...重複したメソッドが追加されているようです。 2つの複製は、その実装元のインタフェースからのものです。しかし、その方法は全く違っていますか? – WildBamaBoy

0

グーグルでは、「保存時にデプロイする」を無効にすると、この問題を解決できます。テストプラットフォームで試して、プロダクションに行く!

2

私は同じ問題がありました。私にとって、根本原因は、aspectjプラグインがソースを2回コンパイルすることでした。 Aspectクラスは 'サービス'モジュールに残り、aspectJプラグインでコンパイルします。そして、それはすでに依存性としてトップレベルの 'web'モジュールにコンパイルされています( 'service'モジュールは 'web'モジュールのaspectJプラグイン設定の 'weaveDependency'のためです)。 ソリューション: は、私はあなたが2つのメソッドを持っていると言うだろう推測では 'ウェブ' モジュール

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>1.5</version> 
    <configuration> 
     <weaveDependencies> 
      <weaveDependency> 
       <groupId>com.taxi.core</groupId> 
       <artifactId>service</artifactId> 
      </weaveDependency> 
     </weaveDependencies> 
    </configuration> 

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>aspectj-maven-plugin</artifactId> 
    <version>1.5</version> 
    <configuration> 
     <aspectLibraries> 
      <aspectLibrary> 
       <groupId>com.taxi.core</groupId> 
       <artifactId>service</artifactId> 
      </aspectLibrary> 
     </aspectLibraries> 
    </configuration> 

関連する問題