Java 发现jni4net示例

Java 发现jni4net示例,java,.net,jni4net,Java,.net,Jni4net,我正在发现这个问题。这是用于提供Java和.NET之间的桥梁的技术。因此,我创建了新的EclipseJava项目,并将jni4net-0.8.6.0-bin/samples/mycsharpdemocal->MyCalcUsageInJava.Java中的示例代码复制到这个项目中。但是,无法编译代码,因为找不到两个导入“mycsharpdemocal.DemoCalc”和“mycsharpdemocal.ICalc”。我不明白如何将mycsharpdemocal.c集成/导入到Java项目中,以

我正在发现这个问题。这是用于提供Java和.NET之间的桥梁的技术。因此,我创建了新的EclipseJava项目,并将jni4net-0.8.6.0-bin/samples/mycsharpdemocal->MyCalcUsageInJava.Java中的示例代码复制到这个项目中。但是,无法编译代码,因为找不到两个导入“mycsharpdemocal.DemoCalc”和“mycsharpdemocal.ICalc”。我不明白如何将mycsharpdemocal.c集成/导入到Java项目中,以便编译代码

import net.sf.jni4net.Bridge;

import java.io.IOException;

import mycsharpdemocalc.DemoCalc;
import mycsharpdemocalc.ICalc;

public class MyCalcUsageInJava {
    public static void main(String arsg[]) throws IOException {
        Bridge.init();
        Bridge.LoadAndRegisterAssemblyFrom(new java.io.File("MyCSharpDemoCalc.j4n.dll"));

        ICalc calc = new DemoCalc();
        final int result = calc.MySuperSmartFunctionIDontHaveInJava("Answer to the Ultimate Question of Life, the Universe, and Everything");

        System.out.printf("Answer to the Ultimate Question is : " + result);
    }
} 
每个示例目录中都有一个。 您必须使用proxygen工具来生成代理(在java代码中使用)。 有generateProxies.cmd批处理可以完成此操作。 更复杂的事情可能需要proxygen的配置文件

此外,每个示例目录中都有社区。 您必须使用proxygen工具来生成代理(在java代码中使用)。 有generateProxies.cmd批处理可以完成此操作。 更复杂的事情可能需要proxygen的配置文件



还有社区

类路径上有类或JAR吗?包含此示例的唯一内容是Calc.cs、MyCSharpDemoCalc.c、MyCSharpDemoCalc.sln、MyCalculatSageInjava.java和MyCSharpDemoCalc.dll。因此,我将MyCSharpDemoCalc.dll放入类路径,但代码仍然无法编译。@YouKuper问题解决了吗?我也有同样的问题…@David C.不,我没有解决这个问题。可能是因为我没有这方面的经验。因此,我选择了另一种方法来解决我的问题,而不是使用.NET汇编。但我将这条线索标记为“已解决”,因为我想帕维尔·萨瓦拉先生已经解释了可能的原因。我再也没有时间调试代码了。@YouKuper好的,谢谢。类或JAR在类路径上吗?包含此示例的唯一内容是Calc.cs、mycsharpdemocal.c、mycsharpdemocal.sln、mycalculatsaginjava.java和mycsharpdemocal.dll。因此,我将MyCSharpDemoCalc.dll放入类路径,但代码仍然无法编译。@YouKuper问题解决了吗?我也有同样的问题…@David C.不,我没有解决这个问题。可能是因为我没有这方面的经验。因此,我选择了另一种方法来解决我的问题,而不是使用.NET汇编。但我将这条线索标记为“已解决”,因为我想帕维尔·萨瓦拉先生已经解释了可能的原因。我只是没有时间调试代码了。@YouKuper好的,谢谢。编译完这个项目后,我试着运行它。显示了以下错误消息:线程“main”java.lang.UnsatisfiedLinkError中出现异常:mycsharpdemocal.DemoCalc.\uuu-ctordomoc0(Lnet/sf/jni4net/inj/IClrProxy;)V位于mycsharpdemocal.DemoCalc.\uu-ctordemoc0(本机方法)位于mycsharpdemocal.DemoCalc.(DemoCalc.java:25)位于mycalcusaginjava.main(mycalcusaginjava.java:13)。怎么了,你能告诉我吗?我想你忘了初始化桥了。或者您没有注册所有DLL。@PavelSavara我在使用您的库时遇到了相同的问题。我已经加载了我的dll并将
jni4net.j-0.8.6.0.jar
jni4net.n-0.8.6.0.dll
jni4net.n.w32.v40-0.8.6.0.dll
放在了我的lib文件夹中。Proxygen在jvm文件夹中生成了一个java类,在clr文件夹中生成了一个cs文件。我只使用第一个。是否正确?您还必须编译生成的.cs文件,因为它们包含桥接部分。生成的DLL也应该加载和注册。示例假定MyCSharpDemoCalc.j4n.dlla编译此项目后,我尝试运行它。显示了以下错误消息:线程“main”java.lang.UnsatisfiedLinkError中出现异常:mycsharpdemocal.DemoCalc.\uuu-ctordomoc0(Lnet/sf/jni4net/inj/IClrProxy;)V位于mycsharpdemocal.DemoCalc.\uu-ctordemoc0(本机方法)位于mycsharpdemocal.DemoCalc.(DemoCalc.java:25)位于mycalcusaginjava.main(mycalcusaginjava.java:13)。怎么了,你能告诉我吗?我想你忘了初始化桥了。或者您没有注册所有DLL。@PavelSavara我在使用您的库时遇到了相同的问题。我已经加载了我的dll并将
jni4net.j-0.8.6.0.jar
jni4net.n-0.8.6.0.dll
jni4net.n.w32.v40-0.8.6.0.dll
放在了我的lib文件夹中。Proxygen在jvm文件夹中生成了一个java类,在clr文件夹中生成了一个cs文件。我只使用第一个。是否正确?您还必须编译生成的.cs文件,因为它们包含桥接部分。生成的DLL也应该加载和注册。示例假定MyCSharpDemoCalc.j4n.dll