1

当我们尝试创建 Component Link 对象时,以下行代码给出异常:

三重应用代码:

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 有关,但是我已经删除了最新的 Tridion 2011 Dll 的所有引用。

求指教,太丢人了!!

谢谢。

最好的祝福,

多发性硬化症

4

5 回答 5

6

我认为 netrtsn 是使用 AnyCpu 编译的,但它确实依赖于 xmogrt.dll,其中有 32 位或 64 位的特定 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

您将 64 位 Juggernet DLL 与 32 位 Java 虚拟机混合使用,反之亦然。一种解决方案是重新安装 64 位 JVM(这会设置注册表),然后使用 64 位 Juggernet DLL

于 2012-09-17T20:27:31.827 回答
0

我在我的机器上安装了 Microsoft Windows 的 JRE 安装来克服这个问题。Windows x64:jre-7-windows-x64.exe

于 2013-10-03T16:14:58.470 回答