到VirtualBox Oracle server的java连接不';行不通

到VirtualBox Oracle server的java连接不';行不通,java,oracle,jdbc,virtualbox,Java,Oracle,Jdbc,Virtualbox,我在MAC OS、NetBeans IDE和Wildfly服务器上开发环境。我的Oracle server通过使用Oracle预定义的虚拟机安装在虚拟机上 已使用NAT和端口1521 forward配置了虚拟箱VM网络 我可以使用SQLDeveloper通过以下配置连接Oracle服务器,并且它可以正常工作 java连接具有以下参数: jdbc.driverClassName = oracle.jdbc.driver.OracleDriver jdbc.url = jdbc:oracle:th

我在MAC OS、NetBeans IDE和Wildfly服务器上开发环境。我的Oracle server通过使用Oracle预定义的虚拟机安装在虚拟机上

已使用NAT和端口1521 forward配置了虚拟箱VM网络

我可以使用SQLDeveloper通过以下配置连接Oracle服务器,并且它可以正常工作

java连接具有以下参数:

jdbc.driverClassName = oracle.jdbc.driver.OracleDriver
jdbc.url = jdbc:oracle:thin:@localhost:1521/XE
jdbc.username = xxxxxxx
jdbc.password = zzzzzzz
hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql = true
hibernate.format_sql = true
并提供以下错误:

08:11:12,534 ERROR [org.hibernate.hql.spi.id.IdTableHelper] (ServerService Thread Pool -- 85) Unable obtain JDBC Connection: java.sql.SQLRecoverableException: Errore di I/O: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:489)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
... 
08:11:12534错误[org.hibernate.hql.spi.id.IdTableHelper](ServerService线程池--85)无法获取JDBC连接:java.sql.SQLRecoverableException:ERROR di I/O:网络适配器无法建立连接
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:489)
位于oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:553)
位于oracle.jdbc.driver.T4CConnection(T4CConnection.java:254)
位于oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
位于oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:208)
... 

问题出在哪里?

我假设
SQLDeveloper
安装在虚拟机上,因此
localhost
工作正常。 但是您试图从实际机器(而不是通过VM)运行代码,因此
localhost
将解析为您的Mac机器,而不是VirtualBox机器

尝试一件事找出虚拟机的IP地址,并将其放入您的配置中,然后重试


通过调整虚拟机中的网络设置,尝试将虚拟机也置于同一网络上。

我假设虚拟机上安装了
SQLDeveloper
,因此
localhost
工作正常。 但是您试图从实际机器(而不是通过VM)运行代码,因此
localhost
将解析为您的Mac机器,而不是VirtualBox机器

尝试一件事找出虚拟机的IP地址,并将其放入您的配置中,然后重试


通过调整虚拟机中的网络设置,尝试将您的虚拟机也置于同一网络上。

OP说他已经配置了端口转发。我将从基本设置开始,继续前进到下一步,这样我就可以确定哪一步失败了。SQLDeveloper安装在来宾机(MAC OS)上。我也尝试过使用telnet localhost 1521,但效果很好,所以问题一定出在java方面,但我不明白在哪里…您的配置看起来很好。尝试将jdbc字符串替换为:jdbc:oracle:thin:@//localhost:1521/XE(localhost前面的两个前斜杠)。确保您可以使用服务名称(XE)与SQLDev连接。不再推荐SID。OP说他已经配置了端口转发。我将从基本设置开始,继续前进到下一步,这样我就可以确定哪一步失败了。SQLDeveloper安装在来宾计算机(MAC OS)上。我也尝试过使用telnet localhost 1521,但效果很好,所以问题一定出在java方面,但我不明白在哪里…您的配置看起来很好。尝试将jdbc字符串替换为:jdbc:oracle:thin:@//localhost:1521/XE(localhost前面的两个前斜杠)。确保您可以使用服务名称(XE)与SQLDev连接。不再推荐使用SID。