1

以下のラインコードは、コンポーネントリンクオブジェクトを作成しようとしているときに例外を示しています。

Tridionアプリケーションコード:

string strUrl = String.Empty;
ComponentLink comp = new ComponentLink(strUrl);

例外:

System.BadImageFormatException was caught
  Message="An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)"
  Source="netrtsn"
  StackTrace:
       at Codemesh.JuggerNET.NativeInterface.GetJvmLoader(Int32 ctorVersion, String configFile, String vers, String conf, String reserved, Boolean bEnvOverrides, Boolean bDefaultJvm, Int32 traceFacility, Int32 traceLevel, Int32& error)
       at Codemesh.JuggerNET.JvmLoader.GetJvmLoader(Boolean bEnvOverrides, Boolean bDefaultJvm, TraceFacility fac, TraceLevel level)
       at Codemesh.JuggerNET.JvmLoader.GetJvmLoader()
       at Codemesh.JuggerNET.NativeInterface.ToJavaStringPinning(String str, Int32 length, IntPtr& result)
       at Codemesh.JuggerNET.NativeInterface.ToJavaString(String str)
       at Codemesh.JuggerNET.JavaMethodArguments.Add_string(String str)
       at Codemesh.JuggerNET.JavaMethodArguments.Add(Object obj, Type type)
       at Codemesh.JuggerNET.JavaMethodArguments.Add(Object obj)
       at Com.Tridion.Linking.ComponentLink..ctor(String publicationURI)
       at Tridion.ContentDelivery.Web.Linking.ComponentLink..ctor(String publicationUri)
       at ResxBind.ResolveLink(String strTcmUri) in F:\Share\Rajeev\Tridion2011\IntegrationLayer\Com.Emirates.Pss.Ibe.UILib\CommonAPI.cs:line 2077

例外として、古いDLLに関連するものになりますが、最新のTridion2011DLLを含むすべての参照を削除しました。

提案してください、その非常に恥ずかしいです!

ありがとう。

よろしくお願いします、

MS

4

5 に答える 5

6

netrtsn は AnyCpu を使用してコンパイルされていると思いますが、32 ビットまたは 64 ビット用の特定の DLL がある xmogrt.dll に依存しています。

これらは、Tridion インストール メディアの /Content Delivery/roles/dotNet の下にあります。

また、次のすべてが 32 ビットまたは 64 ビットであることも確認してください。

  • アプリケーション プール (32 ビットが有効になっている場合)
  • インストールされている Java のバージョン
  • 自分で提供する Dll
于 2012-09-11T11:26:05.930 に答える
4

ほとんどの場合、これは 32 ビットから 64 ビットのバージョンの競合が原因です。Visual Studio 内で実行している場合は、すべての dll の 32 ビット バージョンを使用してください。それ以外の場合は、すべての dll、jar、Java バージョンなどの一致するバージョンを使用していることを確認してください。

于 2012-09-11T06:58:27.253 に答える
3

Javaのバージョンが原因である可能性があります。これも64ビットですか?JAVA_HOME 環境変数が指す場所を確認してください。32 ビット バージョンと 64 ビット バージョンの両方がインストールされている場合は、マシンの RUN プロンプトで %JAVA_HOME% を使用して、 tridion によって呼び出されているバージョンを確認できます。

于 2012-09-11T06:57:21.390 に答える
0

これを克服するために、Microsoft Windows 用の JRE インストールをマシンにインストールしました。Windows x64: jre-7-windows-x64.exe

于 2013-10-03T16:14:58.470 に答える
0

64 ビットの Juggernet DLL と 32 ビットの Java 仮想マシン、またはその逆を混在させています。解決策の 1 つは、64 ビット JVM を再インストールして (これによりレジストリが設定されます)、64 ビット Juggernet DLL を使用することです。

于 2012-09-17T20:27:31.827 に答える