'java.lang.System' 的类型初始值设定项抛出异常。内部异常:无法加载 DLL 'vjsnativ':

Anj*_*ana 5 c# j# asp.net dll

目前正在将 2008/2010 ASP.NET Frame work 3.5 /4 开发的项目迁移到 2012 ASP.NET with Frame Work 4.5 我的项目有 2 个 DLL 支持 J#。加载 WSDL 时,它不显示错误。但是运行时它的抛出错误
'java.lang.System' 的类型初始值设定项抛出了一个异常。内部异常:无法加载 DLL 'vjsnativ':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)内部异常:无法加载 DLL 'vjsnativ':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

尝试更换dll但没有用。从在线更新中了解到,ASP.net 2012 中不再支持 J#。如果有人能对此有所了解,请帮助我。

谢谢

Eri*_*ier 4

我也遇到了同样的问题。我发现了一篇小博客文章,其中包含该问题的解决方案,我将在我的回答中引用它。这是我引用的博客文章:http://blogs.windwardreports.com/davidt/2011/02/calling-j-code-from-net-40.html

请注意,我不能将此解决方案归功于我。这是我个人在自己的项目中使用过的解决方案。

从 .NET 4.0 或更高版本调用 J# DLL 时,您将收到错误 vjsnativ.dll 无法定位。上面链接的解决方法显式加载库。这是一个示例解决方案,几乎取自上述链接:

using System;
using System.IO;
using System.Runtime.InteropServices;

namespace Test
{
    class Program
    {
        [DllImport("kernel32", SetLastError = true)]
        static extern IntPtr LoadLibrary(string lpFileName);

        static void Main(string[] args)
        {
            if (Environment.Version.Major >= 4)
            {
                string folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"..\Microsoft.NET\Framework\v2.0.50727");
                folder = Path.GetFullPath(folder);
                LoadLibrary(Path.Combine(folder, "vjsnativ.dll"));
            }

            // Now you can use J# in newer .NET versions
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

编辑:简单地链接到解决方案并不是回答问题的最佳方式。相反,我概述了链接中提供的解决方案。