问题标签 [jni4net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8589 浏览

java - c# 通过jdbc连接到sql

我有一个 c# 程序,需要通过 JDBC 连接到 SQL。我读到 JDBC 与 java 一起工作,因为我需要从 C# 中使用它,我发现有 jni4net 可以在两者之间架起桥梁。

我似乎找不到任何有关如何执行此操作的示例或教程。任何帮助将不胜感激。我已阅读并尝试使用 jni4net,但找不到任何连接到数据库的示例。

0 投票
1 回答
1248 浏览

java - jni4net c# with java in jni4net java.lang.ClassNotFoundException

我用java构建了一个非常小而简单的helloWorld程序(有接口并且在类中有system.lang.out.println(“hello world”)))。我用代理生成包裹它。现在我正在尝试将其附加到 c#(以 meCalc 为例),我收到以下错误:

未处理的异常:net.sf.jni4net.jni.JNIException:无法从 classLoader sun.misc.Launcher$AppClassLoader@c387f44 加载 dt09120958.HelloWorld09120958 的 java 类 ---> java.lang.ClassNotFoundException: dt09120958.HelloWorld09120958 at net。 sf.jni4net.jni.JNIEnv.ExceptionTest() at net.sf.jni4net.jni.JNIEnv.CallObjectMethodPtr(IJvmProxy obj, MethodId methodIdNative, Value[] args) at java.lang.ClassLoader.loadClass(String par0) at net。 sf.jni4net.utils.Registry.LoadClass(String name, ClassLoader classLoader, JNIEnv env) --- 内部异常堆栈跟踪结束 --- 在 net.sf.jni4net.utils.Registry.LoadClass(String name, ClassLoader classLoader, JNIEnv env) 在 net.sf.jni4net.utils.Registry.RegisterClass(RegistryRecord record, ClassLoader classLoader, JNIEnv env) 在 net.sf.jni4net.utils.Registry。BindJvm(RegistryRecord 记录,ClassLoader classLoader,JNIEnv env)在 net.sf.jni4net.utils.Registry.BindJvm(RegistryRecord 记录,JNIEnv env)在 net.sf.jni4net.utils.Registry.RegisterType(类型类型,布尔绑定 JVM,JNIEnv env) 在 net.sf.jni4net.Bridge.RegisterAssembly(Assembly assembly) 在 netdt09120958.Program.Main(String[] args)在 netdt09120958.Program.Main(String[] args) 的 RegisterAssembly(Assembly 程序集)在 netdt09120958.Program.Main(String[] args) 的 RegisterAssembly(Assembly 程序集)

我的 C# 代码:

为什么呢?我做错了什么,我该如何解决?

0 投票
1 回答
1793 浏览

java - Java - jni4net Bridge - 使用 dll 依赖项部署 Jar

我正在使用 jni4net 和我们供应商提供的一些 dll 创建一个应用程序(也就是说我无法控制 dll)。

在我的 IDE (Eclipse) 中开发程序时,我只是将 jni4net jar 和关联的 dll 放入工作区的项目文件夹中。

[IDE中的项目目录][1]

该程序在 IDE 中运行良好:

输出:

现在,当我从 IDE 导出到可运行的 JAR 时,我选择了“将所需库复制到生成的 JAR 旁边的子文件夹中”的选项。在 jar 现在所在的目录中,我放置所有库和 dll 并从命令提示符运行它。

一旦我创建了一个新的 FactSetOnDemand 对象,程序就会崩溃(上面代码示例中的最后一行)

我还将库和 dll 输入命令行参数并收到相同的错误

最终导致同样的 unsatisfiedlinkerror。

有人可以为我的问题指出正确的方向吗?我很确定这是由于我的导出选项和最终我的目录布局。

非常感谢!

编辑:

在将头撞到墙上后仍然无法正常工作,我在 IDE 和命令提示符 .jar 中添加了一个进程监视器 - 从中​​我能够获得两者都使用的命令行参数(见下文)。

IDE

同样从进程监视器中,我可以看到当 .jar 将 dll 解压缩到类中然后使用 FactSetOnDemand.class 时,正在发生根本问题。

IDE Process Monitor Output的 Process Montiro 输出 您可以看到它成功运行并创建了必要的类。

可运行 .jar 命令行进程监视器输出的进程监视器输出 这无法创建类。

0 投票
1 回答
105 浏览

java - Docker Ubuntu 主机上的 jni4net

我有一个使用 SpringBoot 在 Java 8 中开发的应用程序,它使用 jni4net 来使用 dll 库。

可以在 Ubuntu 中创建一个 docker 容器来运行这个应用程序吗?

在此处输入图像描述

谢谢

0 投票
2 回答
1470 浏览

java - 需要在Java中引用和使用一个C# dll

我需要在java中引用一个.Net dll。我也使用过 jni4net 库。我已按照以下视频中提到的步骤进行操作:

https://www.youtube.com/watch?time_continue=351&v=8OoSK_RWUe4

我已遵循引用 jni4net 库所需的所有步骤,但我得到以下运行时异常:

完成所有步骤后,这是我的代码:

我尝试使用 NetBeans 8.1 IDE 执行相同的操作,但没有成功。我正在使用 jni4net-0.8.8.0 版本和 Eclipse IDE for Java Developers 版本:Oxygen.3 Release (4.7.3) 任何帮助都会有所帮助!

0 投票
1 回答
368 浏览

jni4net - Javonet的性能

到目前为止,我已经让 Javonet 开始调用 .net dll。创建javonet 代码就像宣传的那样简单。

但是,就我而言,我有一个运行大约 1000 万次的循环,在该循环中,我通过 Javonet 调用了一个 dll 方法。我的问题是:由于我似乎将方法名称作为字符串传递给 Javonet(基于 java 的做事方式),我假设 Javonet 使用某种反射来查找相应的 dll 方法......但不会t 这很慢(在 1000 万个循环中),特别是因为我们已经为 javonet 注册了大约十几个不同的 dll(或者比 jni4net 和 jnbridge 之类的解决方案慢,这些解决方案似乎生成了允许我参考的实际代理我的 java 代码将 dll 方法命名为自己,而不将方法名称作为字符串传递?)

此外,Javonet 是否“智能”足以将整个数组(原语)复制到“Java VM 的内存/堆栈”中,以便当我尝试访问(非常大,大约 2GB 数组)中的每个元素时,它不会尝试为每个元素访问执行 JNI 调用?

最后,一般来说,在我上面的场景中,Javonet 会(实质上)比 jni4net 或 jnbridgePro 快/慢(一个大小为 1000 万的循环和包含大约 2GB 原始浮点数的原语数组),是否有任何理论(或观察到的)原因)?

0 投票
1 回答
95 浏览

java - Java / Azure / Jni4Net / dll / Win32Exception (0x80004005):访问被拒绝

我最近将我的 java spring boot 应用程序部署到 Azure 应用程序服务。一切都很好,直到我尝试从春季启动时使用 jni4net 启动的第三方 DLL 实例化服务类(这在部署到标准 win 服务器时非常有效)。

在我尝试从 DLL 库创建某个对象的新实例的那一刻,我得到:

显然是某种许可问题。任何想法?

0 投票
0 回答
179 浏览

visual-studio - 如何调查仅出现在 Visual Studio 调试器中的 JNI 错误

我正在开发使用第三方库(.NET eBMS/AS4 客户端)所需的 .NET 应用程序;该第三方库本身就是 Java 库的 JNI 包装器。当我调用该库时,Java 库中发生了异常,但是实现包装器的人并没有做好它,因为 Java 异常包含的任何信息(例如错误代码、特定错误消息)都没有添加到传递回我的应用程序的 .NET 异常,我得到的只是最通用的错误消息。正如您可以想象的那样,这使得支持生产中的应用程序成为一个困难的提议。

但是,如果我在 Visual Studio 中的开发人员 PC 上运行相同的代码,那么如果我观察输出窗口,调试器会从 Java 库中写入大量信息——我可以看到它正在自行初始化,加载它的所有模块,然后执行,最后我可以看到我的 Java 异常发生了,实际的错误就在输出窗口中。

所以我的问题是:我怎样才能获得调试器可以看到但.NET 运行时不知道的信息?其中一些看起来像日志输出,但它没有被写入我能找到的文件系统上的任何日志中。

更新

第三方代码似乎对log4cxx有所利用(至少,它自带了一个log4cxx.properties和一个log4cxx_x64.dll,但log4cxx.properties似乎是纯log4j);无论如何,我对其进行了调整以显示 DEBUG 级别,而不是之前显示的默认 INFO 级别,现在我可以看到一些输出,但只有 DEBUG 级别,而不是 INFO 或更高级别。下面示例中的 INFO 条目与 DEBUG 条目使用的布局不同,因此我怀疑它们不是由 log4j 编写的。

进一步挖掘(嘿,我是 .NET 人,而不是 Java 人,所以我不知道这些东西是做什么的,直到我用尖头棒戳它)产生一个logging.properties文件,连同上面的日志记录示例,表明INFO: 东西是由 java.utils.logging 编写的,因此值得进行更多调查。

0 投票
1 回答
545 浏览

java - Generating a .java outof .dll with jni4net

I have my c# class library.

Its based on a Keyence.IV.Sdk.dll. I added this .dll as Assembly via Visual Studio. The compiler is friendly and shows no erros. (In a Windows-Applikation the code works fine.)

Now i want to make a Bridge with

JNI4Net (proxygen.exe -...\dll ....) enter image description here

Now i want to execute the build.cmd, but I'm getting this error:

I'm not familiar with c#. I found something with Assembly.LoadFile()... but could not really do anything with it.

Where is the mistake and why i'm getting this error :

'Keyence' namespace not found.

Thank you for reading it.

0 投票
0 回答
250 浏览

java - 使用 jni4net 访问 Java 中的 C# 对象作为方法参数

我们能够在 C# 代码中调用 java 并能够将字符串和整数作为方法参数传递。能够通过使用 java.lang.String 和 java.lang.Integer 直接访问字符串是整数,没有问题。但是当我们将 C# 自定义对象作为方法参数传递时,我们找不到访问它的方法。例如:Employee.cs 是带有参数名称的 C# 类。使用 proxygen 创建 EmployeeLibraray.dll、EmployeeLibraray.j4n.dll 和 EmployeeLibraray.j4n。

我们试图传递 C# 对象的 C# 代码

java中的代码

问题

我们应该如何将 inputObj 转换为 Employee 以便可以直接访问 e.getName()。