C#:.NET 2.0 框架中的 Java 错误

Posted

技术标签:

【中文标题】C#:.NET 2.0 框架中的 Java 错误【英文标题】:C#:Java error in .NET 2.0 framework 【发布时间】:2013-07-04 17:23:24 【问题描述】:

我的应用程序出现以下错误,

错误:

System.TypeInitializationException: The type initializer for 'java.util.Locale' threw an exception. ---> java.lang.UnsatisfiedLinkError: Unable to load DLL 'vjsnativ': The specified module could not be found. (Exception from HRESULT: 0x8007007E) ---> System.DllNotFoundException: Unable to load DLL 'vjsnativ': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at com.ms.vjsharp.windowing.win32.UnsafeWin32Calls.GetLocaleInfo<PInvokeHelper>vjsnativ(Int32 lcid, Int32 lctype, StringBuilder lpLCData, Int32 cchData)
   at com.ms.vjsharp.windowing.win32.UnsafeWin32Calls.GetLocaleInfo(Int32 lcid, Int32 lctype, StringBuffer lpLCData, Int32 cchData)
   at java.util.Locale..ctor(CultureInfo ci, String language, String ctryRgn, String variant)
   at java.util.Locale..ctor(String languageCode, String ctryRgnCode)
   at java.util.Locale..cctor()
   --- End of inner exception stack trace ---
   at java.lang.ExceptionInInitializerError.checkAndThrowException(Throwable thrown)
   at java.util.Locale..cctor()
   --- End of inner exception stack trace ---
   at java.util.Locale.getDefault()
   at com.ms.vjsharp.lang.StringImpl.toUpperCase(String mrString)
   at com.vividsolutions.jts.io.WKTReader.getNextWord(StreamTokenizer tokenizer)
   at com.vividsolutions.jts.io.WKTReader.readGeometryTaggedText(StreamTokenizer tokenizer)
   at com.vividsolutions.jts.io.WKTReader.read(Reader reader)
   at com.vividsolutions.jts.io.WKTReader.read(String wellKnownText)

我正在使用 .net 2.0,windows xp 操作系统。请检查并告诉我您的答案和建议。

谢谢

【问题讨论】:

你真的需要使用J#吗?很久以前就停产了。 为什么要投反对票?有些人被困在与遗留的第三方库集成 - 这篇文章对我有很大帮助 【参考方案1】:

您可以找到 vjsnativ.dll 并将其复制到您的应用程序目录,或者您可以在调用任何 J# 代码之前添加此代码。

// This problem started with .NET 4
if (Environment.Version.Major >= 4)

    string dllpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"..\Microsoft.NET\Framework\v2.0.50727");
    dllpath = Path.GetFullPath(dllpath);
    LoadLibrary(Path.Combine(dllpath, "vjsnativ.dll"));

// J# code should work now

【讨论】:

除了未定义 LoadLibrary 之外,Assembly.LoadFile 为此文件提供以下错误:该模块应包含程序集清单。 (HRESULT 异常:0x80131018) 所以让LoadLibrary定义:[DllImport("kernel32.dll")] public static extern IntPtr LoadLibrary(string dllToLoad);

以上是关于C#:.NET 2.0 框架中的 Java 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 4.0 编译器让 MonoDevelop 以 .NET 2.0 框架为目标?

如何对事件日志中的 .NET 2.0 错误报告消息进行故障排除?

.net - C# 2.0 应用程序中的玻璃效果

如何使用 .net 框架 2.0 在 Web 服务中使用 Web api

如何将 .NET 标准库更改为 .NET 框架库?

我可以在面向 .Net 3.5 的项目中使用所有 C# 4.0 功能吗?