Инициализатор типа для 'java.lang.System' вызвал исключение. Внутреннее исключение: невозможно загрузить DLL vjsnativ:

В настоящее время я занимаюсь миграцией проекта, разработанного в 2008/2010 гг. ASP.NET Frame работа 3.5 /4 до 2012 ASP.NET с Frame Work 4.5 Мой проект имеет 2 DLL поддержки J#. При загрузке WSDL ошибка не отображается. Но время выполнения его ошибка
Инициализатор типа для 'java.lang.System' вызвал исключение. Внутреннее исключение: невозможно загрузить библиотеку DLL vjsnativ: указанный модуль не найден. (Исключение из HRESULT: 0x8007007E) Внутреннее исключение: невозможно загрузить DLL 'vjsnativ': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E)

Пытался заменить dll, но бесполезно. Из онлайн-обновлений стало понятно, что в ASP.net 2012 больше нет поддержки J#. Пожалуйста, помогите мне, если кто-нибудь может пролить свет / мысли на этот счет.

Спасибо

2 ответа

Я столкнулся с той же проблемой. Я наткнулся на небольшое сообщение в блоге с решением проблемы, на которое я буду ссылаться в своем ответе. Вот сообщение в блоге, на которое я ссылаюсь: http://blogs.windwardreports.com/davidt/2011/02/calling-j-code-from-net-40.html.

Обратите внимание, что я не могу взять кредит на это решение. Это решение, которое я лично использовал в своих проектах.

При вызове J# DLL из.NET 4.0 или новее вы получите ошибку 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
        }
    }
} 

Изменить: Простая ссылка на решение не лучший способ ответить на вопрос. Я вместо этого обрисовал в общих чертах решение, предоставленное в ссылке.

Я решил мой и нашел решение: Скопируйте следующие DLL в папку bin \ debug

C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ vjscor.dll C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ vjslib.dll C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ vjsnativ.dll

- спасибо Шайлешу https://social.msdn.microsoft.com/Forums/vstudio/en-US/027fbfbe-2564-42cf-8b49-4cbac8c45f92/javalangsystem-exception-for-vjslib-in-c?forum=netfxsetup

Другие вопросы по тегам