【问题标题】:com.sun.net.httpserver.HttpHandler ClassNotFound Exception on Java Embedded Runtime EnvironmentJava 嵌入式运行时环境中的 com.sun.net.httpserver.HttpHandler ClassNotFound 异常
【发布时间】:2014-08-07 09:45:05
【问题描述】:

我正在尝试在 ejre 上运行 restlet。在具有普通 jre 的 eclipse 中,代码工作得非常好,但在 ejre 中我得到以下异常:

java.lang.ClassNotFoundException: com.sun.net.httpserver.HttpHandler cannot be found

我正在使用 restlet v. 2.2.1。适用于 jee 和 Java SE Embedded Runtime Environment(build 1.7.0_21-b11,headless)Java HotSpot Embedded Client VM(build 23.21-b01,混合模式)

我尝试了 restlet v. 2.1。如here 中所述,但它不起作用。

有人遇到过类似问题吗?

【问题讨论】:

    标签: java embedded classnotfoundexception restlet com.sun.net.httpserver


    【解决方案1】:

    在(部分)回答您的问题之前,我必须解释一些事情。 Restlet Framework 提供了一个 API 和一个实现,我们尝试在多个环境(经典 JVM、servlet 容器、android、gwt、gae)中提供它们。由于这些环境仅支持部分 JDK(例如 GWT 讨厌服务器代码),我们通过提供我们称之为框架的“版本”来解决这个限制(参见 http://restlet.com/learn/guide/2.2/editions/)。

    在ejre的上下文中,我了解不支持基于JDK轻量级服务器的内部服务器连接器。 为了帮助您,我们可以推出一个新版本(参见这张票https://github.com/restlet/restlet-framework-java/issues/939)。

    由于我不确定能否很快提供,我想知道您是否打算在 JVM 中运行 HTTP 服务器,或者您是否只想发出客户端请求。 在这种情况下,您可以尝试在之前运行这些指令(未测试):

    org.restlet.engine.Engine.register(false);
    Engine.getInstance().getRegisteredClients().add(new org.restlet.engine.connector.HttpClientHelper(null));
    

    【讨论】:

    • 我只想使用客户端请求。通过使用 org.restlet-2.1snapshot,问题不再存在。 2.1.7 和 2.1.6 不起作用。
    【解决方案2】:

    遇到这个问题将 org.restlet.jee 从 2.0.15 升级到 2.2.0

    必须将类添加到 maven 依赖项中

        <dependency>
            <groupId>com.sun.net.httpserver</groupId>
            <artifactId>http</artifactId>
            <version>20070405</version>
        </dependency>
    

    【讨论】:

    • 但是为什么会这样呢?它以某种方式被排除在外?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 2023-03-12
    • 2015-08-20
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多