Java 在virtualBox上访问服务的未知后异常

Java 在virtualBox上访问服务的未知后异常,java,linux,ubuntu,Java,Linux,Ubuntu,Oracle NoSQL是一个应该托管在Linux上的数据库,所以我在Oracle VM VirtualBox中运行了一个虚拟Ubuntu 运行KvStore for Oracle NoSQL时,数据库使用端口5000,管理控制台使用端口5001。从我的pc,我可以访问linux虚拟机上运行的管理控制台,如下所示: http://192.168.0.25:5001/ 其中192.168.0.25是我从linux机器的ifconfig命令获得的inet addr 但是,如果我尝试从java连接到

Oracle NoSQL是一个应该托管在Linux上的数据库,所以我在Oracle VM VirtualBox中运行了一个虚拟Ubuntu

运行KvStore for Oracle NoSQL时,数据库使用端口5000,管理控制台使用端口5001。从我的pc,我可以访问linux虚拟机上运行的管理控制台,如下所示:

http://192.168.0.25:5001/
其中192.168.0.25是我从linux机器的ifconfig命令获得的inet addr

但是,如果我尝试从java连接到数据库,将主机和端口号传递给java,如下所示:

KVStoreConfig kvconfig = new KVStoreConfig("kvstore", "192.168.0.25:5000");
我得到以下错误:

Exception in thread "main" oracle.kv.FaultException: Could not contact any RepNode at: [192.168.0.25:5000] (11.2.2.0.26)
Fault class name: oracle.kv.KVStoreException
    at oracle.kv.KVStoreFactory.getStore(KVStoreFactory.java:123)
    at nosql.Test.main(Test.java:18)
Caused by: oracle.kv.KVStoreException: Could not contact any RepNode at: [192.168.0.25:5000]
    at oracle.kv.impl.util.TopologyLocator.getInitialTopology(TopologyLocator.java:226)
    at oracle.kv.impl.util.TopologyLocator.get(TopologyLocator.java:85)
    at oracle.kv.impl.api.RequestDispatcherImpl.<init>(RequestDispatcherImpl.java:285)
    at oracle.kv.KVStoreFactory.getStore(KVStoreFactory.java:118)
    ... 1 more
Caused by: java.rmi.UnknownHostException: Unknown host: coraythan-VirtualBox; nested exception is: 
    java.net.UnknownHostException: coraythan-VirtualBox
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:616)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128)
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194)
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148)
    at com.sun.proxy.$Proxy0.getSerialVersion(Unknown Source)
    at oracle.kv.impl.util.registry.RemoteAPI.<init>(RemoteAPI.java:60)
    at oracle.kv.impl.rep.admin.RepNodeAdminAPI.<init>(RepNodeAdminAPI.java:63)
    at oracle.kv.impl.rep.admin.RepNodeAdminAPI.wrap(RepNodeAdminAPI.java:70)
    at oracle.kv.impl.util.TopologyLocator.getInitialTopology(TopologyLocator.java:191)
    ... 4 more
Caused by: java.net.UnknownHostException: coraythan-VirtualBox
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at oracle.kv.impl.util.registry.ClientSocketFactory.createSocket(ClientSocketFactory.java:300)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
    ... 14 more
但是,如果我试图从我的主计算机上这样做,它会给我一个“找不到”的错误

我已经尝试将java连接更改为coraythan virtualbox:5000,但这也不起作用


有人知道我做错了什么吗?谢谢

您正在使用命名地址创建套接字,即DNS不知道这样的名称。尝试将其更改为IP地址

抛出以指示无法访问主机的IP地址 下定决心


问题是linux计算机没有自动向我公司的网络注册其网络名称。我必须让网络管理员手动为计算机添加网络名称。KVStore需要使用网络名称。

您甚至可以从主机ping到192.168.0.25吗?您为vm机箱配置了哪种类型的网络适配器?仅主机还是桥接?桥接,是的,我可以ping它。看看这个问题,似乎您在使用nmap命令访问端口时遇到问题,您应该能够实际看到端口是否可以从主机访问。@Stainedart好吧,我刚刚试着从虚拟机和主机使用nmap,两人似乎都说港口已经开放并准备就绪。主机上显示:
主机启动(0.0010s延迟)。端口状态服务5000/tcp过滤upnp
@Stainedart这就是我说的,使用IP而不是主机名。我正在尝试使用“192.168.0.25:5000”进行连接。这就是它不能连接的。我也在想OP将如何通过NAT。
coraythan-virtualbox:5001