【问题标题】:Getting BadImageFormatException exception for "netrtsn" in my Tridion 2011 application在我的 Tridion 2011 应用程序中获取“netrtsn”的 BadImageFormatException 异常
【发布时间】:2012-09-11 06:04:47
【问题描述】:

当我们尝试创建组件链接对象时,以下行代码给出异常:

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

请指教,太丢人了!!

谢谢。

最好的问候,

MS

【问题讨论】:

  • 可能是许可证问题。验证您的内容交付许可证。您是在所有页面上还是在特定页面上都得到这个?

标签: iis tridion tridion-2011


【解决方案1】:

我认为 netrtsn 是使用 AnyCpu 编译的,但它确实依赖于 xmogrt.dll,其中有 32 位或 64 位的特定 DLL

这些可在您的 Tridion 安装介质上的 /Content Delivery/roles/dotNet 下找到

还请检查以下所有内容是 32 位还是 64 位:

  • 您的应用程序池(在 32 位的情况下已启用)
  • 您安装的 Java 版本
  • 您自己提供的任何 Dll

【讨论】:

    【解决方案2】:

    大多数情况下,这是由 32 - 64 位版本冲突引起的。如果您在 Visual Studio 中运行,请使用所有 dll 的 32 位版本。否则,请确保您使用的是所有 dll、jar、java 版本等的匹配版本。

    【讨论】:

    • 正如 Albert 所说,您要么在 64 位环境中使用 32 位版本的 netrtsn,要么在 32 位环境中使用 64 位。不过,这不是 Tridion 特有的错误 ;)
    • @Jeremy 建议可能是什么原因,请提出任何解决方案
    【解决方案3】:

    这可能是由于你的 java 版本。 这也是64位吗? 检查它指向的 JAVA_HOME 环境变量。 如果您同时安装了 32 位和 64 位版本,请在机器的 RUN 提示符中使用 %JAVA_HOME% 您可以检查 tridion 调用的版本。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-08
          • 1970-01-01
          • 1970-01-01
          • 2012-09-09
          • 1970-01-01
          • 2012-03-17
          相关资源
          最近更新 更多