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

时间:2014-07-28 10:33:02

标签: c# asp.net dll j#

目前正在迁移2008/2010年开发的项目ASP.NET框架工作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#。 请帮助我,如果有人可以对此发表意见/想法。

由于

1 个答案:

答案 0 :(得分:3)

我也遇到过同样的问题。我遇到了一个小问题的博客文章,我将在答案中提及。以下是我所指的博文: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
        }
    }
} 

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