
问题:接口是已经封装好的一个JAR包,已经转为dll文件,但使用接口需要传入Java中的InetAddress对象,实例化过程程序抛出了下列异常,不懂原因发生在哪里,求大神指教!
估计下面的实例化Socket也会报同样的错误,请大神顺手一块解释一下吧!
异常:{System.TypeInitializationException: “java.net.InetAddress”的类型初始值设定项引发异常。 ---> java.lang.UnsatisfiedLinkError: no net in java.library.path
在 java.security.AccessController.doPrivileged(Object , AccessControlContext , CallerID )
在 java.security.AccessController.doPrivileged(PrivilegedAction action, CallerID )
在 java.net.InetAddress..cctor()
--- 内部异常堆栈跟踪的结尾 ---
在 java.net.InetAddress.getByName(String host)
在 SocketInterfaceTest.SocketInterfaceTest.Page_Load(Object sender, EventArgs e) 位置 D:\WORK\SocketInterfaceTest\SocketInterfaceTest\SocketInterfaceTest.aspx.cs:行号 41}
代码:
......
using java.net;
using java.io;
using java.security;
namespace SocketInterfaceTest
{
public partial class SocketInterfaceTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
.......
java.net.InetAddress addr = java.net.InetAddress.getByName(null); //连接前置机地址
java.net.Socket clientSocket = new java.net.Socket(addr, 55055); //连接前置机器
//创建库接口实例
IEBLSocketIO sockio = AbcEblClientFactory.newSockIO();
//调用库接口发送消息
sockio.send(inPack, msgTyp, msgTypName, custID, clientSocket);
//调用库接口接受消息,同步等待模式
string rspmsg = sockio.receiveSynch(clientSocket);
前面就是一些取值之类的操作,执行到连接前置机地址那就会报上面的错误,这是原Java中调用的代码,加是需要的引用后,可以通过编译了,但是一执行就会报上面的错误,求大神指教该怎么做?
------解决思路----------------------
no net in java.library.path
这句话的意思就是你的库文件里没有net
------解决思路----------------------
估计是这个jar包虽然转成了dll,但还是会用到一些java里的环境变量吧,较典型的是%JAVA_HOME%和%Path%