这次是因增加新的功能,直接把class文件更新到了服务器上,但是运行时就到了匿名内部类就消失了的问题,这个问题导致加班还在搞,一直搞到凌晨4点
如下正常的JAVA代码,应该执行到log.info("create default http client start.......");但是后面就没执行了 也就是后面的config没东西出现 导致异常出现,但是我们明明替换了这个编译后的class文件啊
public static CloseableHttpClient createDefaultHttpClient(RequestConfig config) throws KeyManagementException, NoSuchAlgorithmException {
log.info("create default http client start.......");
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
System.out.println(hostnameVerifier);
System.out.println("config"+config);
服务器上的信息 看到和上面的显示的一样 出现info后就没东西了 断定这里出现问题
[INFO] create default http client start....... <com.tzsw.dsv.util.HttpClientUtil.createDefaultHttpClient()> (HttpClientUtil.java:188)
null
使用class反编译工具查看 当时的文件 发现是有的 怎么会没的 后来才注意到 匿名内部类 会在当前文件夹下生成以$1 $2为名的文件,如果你不把这个文件带上,那编译后的文件是失效的
public static CloseableHttpClient createDefaultHttpClient(RequestConfig config) throws KeyManagementException, NoSuchAlgorithmException {
log.info("create default http client start.......");
HostnameVerifier hostnameVerifier = new HostnameVerifier()
{
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
HttpClientUtil$1.class HttpClientUtil$2.class HttpClientUtil.class 第三个是正常的java生成的
但是如果仅仅只是更新最后一个class是会出问题的,需要连着上面的3个一起 且最好是打包 放在本次文件夹下才可以执行