【问题标题】:Java Firebase error "NoClassDefFoundError: org/apache/http/conn/ssl/StrictHostnameVerifier"Java Firebase 错误“NoClassDefFoundError:org/apache/http/conn/ssl/StrictHostnameVerifier”
【发布时间】:2016-01-27 18:27:43
【问题描述】:

我有一个非常简单的 servlet 程序在谷歌应用引擎上正常运行。现在,当我添加 firebase 对象以进行子值更新调用时,它在 appengine 和本地 apache tomcat 上显示服务器错误 500,它也显示一些错误。 这是我的代码

package com.example.appengine.helloworld;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.firebase.client.Firebase;
import com.firebase.client.FirebaseException;

@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException,FirebaseException  {


    PrintWriter out = resp.getWriter();
    out.println("Hello, world");
    Firebase fire = new Firebase("https://fiery-fire-0.firebaseio.com/");
    fire.child("hello").setValue("Nothing is in here");   
  }
}

这是在 apache tomcat 上运行时的错误

    Exception in thread "TubeSockReader-1" java.lang.NoClassDefFoundError: org/apache/http/conn/ssl/StrictHostnameVerifier
    at com.firebase.tubesock.WebSocket.verifyHost(WebSocket.java:287)
    at com.firebase.tubesock.WebSocket.createSocket(WebSocket.java:271)
    at com.firebase.tubesock.WebSocket.runReader(WebSocket.java:306)
    at com.firebase.tubesock.WebSocket.access$000(WebSocket.java:30)
    at com.firebase.tubesock.WebSocket$2.run(WebSocket.java:108)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.http.conn.ssl.StrictHostnameVerifier
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1854)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1703)
    ... 6 more

在谷歌应用引擎上运行它只是说

Error: Server Error

The server encountered an error and could not complete your request.
Please try again in 30 seconds.

请帮帮我!

【问题讨论】:

    标签: java google-app-engine servlets firebase


    【解决方案1】:

    您的 http 客户端库的版本似乎没有(现已弃用)类 StrictHostnameVerifier。

    https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/ssl/StrictHostnameVerifier.html

    尝试手动包含 httpclient 4.0.1 而不是“最新”(尽管根据文档它应该出现在 4.5.1 中)。

    【讨论】:

    • 谢谢,它成功了。虽然它在 4.5.1 的文档中显示 StrictHostnameVerifier 类存在,但它不存在,而且我的 firebase jar 本身依赖于 4.0.1 并且会自动下载。但是当我删除该 jar 并手动下载并将其添加到 m2 存储库时,它开始工作。
    • 我遇到了一个新问题。当我使用 Apache Tomcat 服务器在本地主机上部署它时,该代码运行良好,但在 Google App Engine 上部署它时仍然返回相同的错误。有谁知道为什么会这样?请帮助我!!!
    猜你喜欢
    • 1970-01-01
    • 2018-09-13
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2017-03-16
    • 2015-10-27
    相关资源
    最近更新 更多