问题标签 [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.
java - c# 通过jdbc连接到sql
我有一个 c# 程序,需要通过 JDBC 连接到 SQL。我读到 JDBC 与 java 一起工作,因为我需要从 C# 中使用它,我发现有 jni4net 可以在两者之间架起桥梁。
我似乎找不到任何有关如何执行此操作的示例或教程。任何帮助将不胜感激。我已阅读并尝试使用 jni4net,但找不到任何连接到数据库的示例。
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# 代码:
为什么呢?我做错了什么,我该如何解决?
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 命令行进程监视器输出的进程监视器输出 这无法创建类。
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) 任何帮助都会有所帮助!
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 原始浮点数的原语数组),是否有任何理论(或观察到的)原因)?
java - Java / Azure / Jni4Net / dll / Win32Exception (0x80004005):访问被拒绝
我最近将我的 java spring boot 应用程序部署到 Azure 应用程序服务。一切都很好,直到我尝试从春季启动时使用 jni4net 启动的第三方 DLL 实例化服务类(这在部署到标准 win 服务器时非常有效)。
在我尝试从 DLL 库创建某个对象的新实例的那一刻,我得到:
显然是某种许可问题。任何想法?
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 编写的,因此值得进行更多调查。
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
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.
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()。