2010-11-30 5 views
0

のGrails 1.3.5アプリ(コンソールを介してこれをテストすることができます)...で、次のスニペットしようとすると:リンケージ問題

import com.amazonaws.services.ec2.model.* 
def ec2 = ctx.ec2Client 
def rir = new RunInstancesRequest("<some-ami-id>", 1, 1) 
Placement placement = new Placement() 
placement.setGroupName("<yourPlacementGroup>") 
rir.setPlacement(placement) 
rir.setKeyName("<yourKeyPairName>") 
RunInstancesResult result = ec2.runInstances(rir) 

を私は次のスタックトレースを取得

::私は私のBuildConfig.groovyに次き

java.lang.LinkageError: loader constraint violation: when resolving field "NODE" the class loader (instance of org/codehaus/groovy/grails/cli/support/GrailsRootLoader) of the referring class, javax/xml/xpath/XPathConstants, and the class loader (instance of <bootloader>) for the field's resolved type, javax/xml/namespace/QName, have different Class objects for that type 
    at com.amazonaws.util.XpathUtils.asNode(XpathUtils.java:319) 
    at com.amazonaws.util.XpathUtils.evaluateAsString(XpathUtils.java:363) 
    at com.amazonaws.util.XpathUtils.asString(XpathUtils.java:120) 
    at com.amazonaws.transform.LegacyErrorUnmarshaller.parseErrorCode(LegacyErrorUnmarshaller.java:96) 
    at com.amazonaws.transform.LegacyErrorUnmarshaller.unmarshall(LegacyErrorUnmarshaller.java:62) 
    at com.amazonaws.transform.LegacyErrorUnmarshaller.unmarshall(LegacyErrorUnmarshaller.java:29) 
    at com.amazonaws.http.DefaultErrorResponseHandler.handle(DefaultErrorResponseHandler.java:76) 
    at com.amazonaws.http.DefaultErrorResponseHandler.handle(DefaultErrorResponseHandler.java:36) 
    at com.amazonaws.http.HttpClient.handleErrorResponse(HttpClient.java:508) 
    at com.amazonaws.http.HttpClient.execute(HttpClient.java:215) 
    at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:3804) 
    at com.amazonaws.services.ec2.AmazonEC2Client.runInstances(AmazonEC2Client.java:267) 
    at ConsoleScript2.run(ConsoleScript2:10) 

を投げ

例外

これを引き起こす原因は何ですか?

答えて

0

ソリューション:BuildConfig.groovyで
、依存関係のsecionで、追加します。

runtime('com.amazonaws:aws-java-sdk:1.1.0'){ 
    excludes "stax-api" 
} 
runtime('stax:stax:1.2.0'){ 
    excludes "stax-api" 
} 

STAX 1.2.0とAmazonのSKDの両方がSTAX-API 1.0.1への依存性を持っているためです。 Java 1.6.0では、stax apiはすでにjre jarsにバンドルされています。

0

上記の回答は私にとっては役に立たなかった。私は指示通りにBuildConfig.groovyに調整を加えましたが、エラーは持続しました。

最終的に私は、javax/xml/namespace/QNameを探しているすべてのJARファイルをgrepしなければならず、独自の社内PayPalプラグインのjaxrpc.jarが誤ったクラスを含んでいた。その後、JAX-RPCライブラリが更新され、そのJARファイル(QNameを含まない)を更新した後、JAX-RPCライブラリはすべて正常に動作しました。

上記の解決方法が他の人には役に立たない場合は、ここで言及してください。そうでない場合は、QNameを含むJARファイルがありますが、どこかで探してください。

+0

ありがとうございます...しかし原則は同じですね。 BuildConfig.groovyで異なる除外を設定するだけですか? – Philippe

+0

いいえ、私のケースでは、QNameクラスを持たない新しいバージョンにその依存関係JARを単純に更新しました。他の人にも問題を引き起こしたようです。 – jondow

関連する問題