通过ikvm工具把Java程序jar包生成dll以供C#程序调用,但是生成dll的过程出错,导致C#不能正常调用dll。
答案:1 悬赏:40 手机版
解决时间 2021-03-28 21:55
- 提问者网友:风月客
- 2021-03-28 00:41
通过ikvm工具把Java程序jar包生成dll以供C#程序调用,但是生成dll的过程出错,导致C#不能正常调用dll。
最佳答案
- 五星知识达人网友:归鹤鸣
- 2021-03-28 00:50
这是因为这个jar包中的类引用了其他的jar包,看你的控制台信息是dom4j。你可能需要把dom4j也一起进行转换。追问您好,很感谢您的回答。dom4j是什么??第三方的jar包吗?我后来通过fat-jar工具把第三方的jar也导出来,一起生成dll,但是还是说缺少各种class文件。还是说我手动的上网找到这些jar包再一起生成呢,程序引用的第三方jar包太多了,我在程序里都找不到这些???追答dom4j 是java中的一个解析xml文件的第三方jar包,dom4j 好像也依赖了几个其他的jar包。估计你需要包所有的jar包全部转换成dll你的程序才能运行起来。追问真的非常感谢您。我把dom4j.jar生成dll,同样遇到了警告,我要把警告中出现的class依次找到相应的jar生成dll,再用来生成dom4j-1.6.1.dll吗??万一找到了相应的jar后生成dll时又是碰到同样缺少class的警告,又要重新再找吗?太恐怖了。我想把Java程序通过生成dll,被C#调用,Java程序中引用了第三方jar包,调用出错。我不知道怎么办,您对这方面熟悉吗?
追答所有缺少的class你都得找到并转换。java程序引用的第三方包都需要进行转换的.
感觉你这样做得不偿失,而且你的那个java程序不一定能全部转换成功。IKVM的初衷是在.net上直接运行java程序,转换只是一个附加功能而且不是能100%的对jar包进行转换,好像IKVM不支持java5以上的只支持到java1.4,现在还有用1.4进行编程的吗?几乎没有了吧,限制太大。
你的C#程序想调用java,你用webservice也比现在的这个转换方案要好。追问非常感谢您的回答。听了您的建议,我看了一些webService的相关内容,采用的是MyEclipse的AXis2插件发布,我学会了发布一个类,没有看到如何发布一个工程。我的Java程序有很多包和类,难道倒时候把每个类都发布上去吗,还是写一个类似完成Main()函数功能的类来被客户端调用就可以了???还有Axis2不支持List返回吗?我在客户端调用都是报出异常,只能返回数组??
追答不是把每个类都发布。具体发布的类需要看你需要调用的那些业务发放。只需要吧业务方法的实现类发布出来就是。
list类型webservice是可以返回的。cfx可以Axis2应该也可以,我做webservice一般用cfx感觉比Axis2简单。
追答所有缺少的class你都得找到并转换。java程序引用的第三方包都需要进行转换的.
感觉你这样做得不偿失,而且你的那个java程序不一定能全部转换成功。IKVM的初衷是在.net上直接运行java程序,转换只是一个附加功能而且不是能100%的对jar包进行转换,好像IKVM不支持java5以上的只支持到java1.4,现在还有用1.4进行编程的吗?几乎没有了吧,限制太大。
你的C#程序想调用java,你用webservice也比现在的这个转换方案要好。追问非常感谢您的回答。听了您的建议,我看了一些webService的相关内容,采用的是MyEclipse的AXis2插件发布,我学会了发布一个类,没有看到如何发布一个工程。我的Java程序有很多包和类,难道倒时候把每个类都发布上去吗,还是写一个类似完成Main()函数功能的类来被客户端调用就可以了???还有Axis2不支持List返回吗?我在客户端调用都是报出异常,只能返回数组??
追答不是把每个类都发布。具体发布的类需要看你需要调用的那些业务发放。只需要吧业务方法的实现类发布出来就是。
list类型webservice是可以返回的。cfx可以Axis2应该也可以,我做webservice一般用cfx感觉比Axis2简单。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯