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

T0virus 2015-09-08 05:25:02
程序要求:用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中调用的代码,加是需要的引用后,可以通过编译了,但是一执行就会报上面的错误,求大神指教该怎么做?
...全文
214 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2015-09-09
  • 打赏
  • 举报
回复
no net in java.library.path 这句话的意思就是你的库文件里没有net
T0virus 2015-09-09
  • 打赏
  • 举报
回复
尽然没有人回复,好心寒。 虽然不知道什么原因,但我发现只要在catch里面加上throw ex,程序就不会报错了,希望能帮到遇到同样状况的人吧
  • 打赏
  • 举报
回复
估计是这个jar包虽然转成了dll,但还是会用到一些java里的环境变量吧,较典型的是%JAVA_HOME%和%Path%
T0virus 2015-09-09
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
no net in java.library.path 这句话的意思就是你的库文件里没有net
奇了个怪了,重新建了个项目,用之前报错的代码执行也可以了!!! 我就装了一个Java的JDK,配了一下执行Java程序的环境变量,然后就没事了?难道是jdk和环境变量的原因???
T0virus 2015-09-09
  • 打赏
  • 举报
回复
引用 2 楼 shingoscar 的回复:
no net in java.library.path 这句话的意思就是你的库文件里没有net
和这个没关系,我专门去查了这种异常状况,解决方法大多是要在Java的开发环境进行一些设置,但是我这是C#的开发环境

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧