原因:java.net.NoRouteToHostException:没有到主机的路由
我正试图在openshift上从eclipse部署Jersey项目,我在尾部文件中得到了这个错误,原因是:java.net.NoRouteToHostException:No route to host 以前我有过这样的经历:原因:java.net.NoRouteToHostException:没有到主机的路由,java,sql,jdbc,jersey,openshift,Java,Sql,Jdbc,Jersey,Openshift,我正试图在openshift上从eclipse部署Jersey项目,我在尾部文件中得到了这个错误,原因是:java.net.NoRouteToHostException:No route to host 以前我有过这样的经历: String host = "jdbc:mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/bustrackerserver" 我得到了这个错误: 'java.lang.NumberFormatExcept
String host = "jdbc:mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/bustrackerserver"
我得到了这个错误:
'java.lang.NumberFormatException:用于输入字符串:“OPENSHIFT\u MYSQL\u DB\u端口”'
我已经ping了这个ip地址127.10.230.440,我得到了回复
我检查了一些端口80803306是否正在从本地的mashine使用,但它们只是从eclipse使用。
苹果课
package org.busTracker.serverSide;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Map;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
/**
* Root resource (exposed at "myresource" path)
*/
@Path("myresource")
public class Apple {
//String host = " jdbc:mysql://${env.OPENSHIFT_MYSQL_DB_HOST}:${env.OPENSHIFT_MYSQL_DB_PORT}/serverside";
//String host = "jdbc:mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/bustrackerserver";
String host = "jdbc:mysql://127.10.230.440:3306/bustrackerserver";
String user = "adminNMccsBr";
String password = "K3SV5rbxh8qP";
/**
* Method handling HTTP GET requests. The returned object will be sent
* to the client as "text/plain" media type.
*
* @return String that will be returned as a text/plain response.
*/
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Connecting to database…");
conn = DriverManager.getConnection(host,user,password);
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n",
envName,
env.get(envName));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// ignore
}
}
}
return "Hello, from apple class 14.05.15 13:30!";
}
}
您的MySQL未在TCP/IP上侦听,因此您的连接尝试失败。你回答了你的问题,你说:
我检查了一些端口80803306是否正在从本地的mashine使用,但它们只是从eclipse使用
换句话说,MySQL没有在本地主机上侦听。要以另一种方式确认这一点,请尝试从命令提示符连接到MySQL:
mysql -u adminNMccsBr -h 127.10.230.440 -p YOUR_DB_NAME
我预计这会失败。问题的解决方案是将MySQL配置为在本地主机上侦听。在/etc/my.cnf配置文件的[mysqld]行下,添加以下内容:
bind-address = 127.10.230.440
这不是Java问题,而是MySQL问题。您知道127.x.x.x地址是环回地址吗?它们不会离开本地机/虚拟机。@StephenC:hm我真的不知道这意味着什么,但我用环境变量尝试了一下,得到了以下错误java.lang.NumberFormatException:对于输入字符串:“OPENSHIFT\u MYSQL\u DB\u PORT我还需要用什么来替换它?我只想在servlet容器中部署我的Jersey项目Tomcat 7、phpmyadmin、MYSQL 5.5。这是用OPENSHIFT管理的吗?这个链接解释了什么是环回地址:。鉴于你不认识这个术语,我怀疑这是你问题的根本原因lem是我必须使用System.getenv.get来设置主机字符串`string host=jdbc:mysql://+System.getenv.getOPENSHIFT_mysql_DB_host+:+System.getenv.getOPENSHIFT_mysql_DB_PORT+/serverSide;`我试图从命令提示符comands执行命令,但我得到了类似命令mysql无法重新登录的问题我的bind address=127.0.0.1文件我将其更改为bind address=127.10.230.440,但没有任何更改。但我注意到,我也尝试从XAMPP访问phpmyadmin,但我无法再进行访问。我认为这是我在eclipse中安装openshift插件时的情况,而不是因为这一行在我设置此lin后被更改为bind address=127.10.230.440e恢复到旧状态,但我仍然无法访问我的phpmyadmin。这是一个问题,因为XAMMP也在端口3306上列出了吗?我现在在XAMMP的GUI上看到了它。我正在使用widnows 8。尝试杀死XAMMP,看看会发生什么。你真的应该尝试从命令行连接到MySQL,因为你想排除任何潜在的问题如果您不能从命令行连接,那么问题仍然在于MySQL。