当前位置: 代码迷 >> C# >> C# 调用Java.net上的InetAddress.getByName 类型初始值设定项引发错误
  详细解决方案

C# 调用Java.net上的InetAddress.getByName 类型初始值设定项引发错误

热度:283   发布时间:2016-05-05 02:57:49.0
C# 调用Java.net上的InetAddress.getByName 类型初始值设定项引发异常
程序要求:用C#调用JAVA上的接口,发送报文,
问题:接口是已经封装好的一个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%
  相关解决方案