无法注册助手 org.restlet.ext.ssl.HttpsClientHelper

Unable to register the helper org.restlet.ext.ssl.HttpsClientHelper

我将以下库用于 rest web 服务

commons-beanutils-1.7.0.jar
commons-collections-3.2.jar
commons-dbcp-1.2.2.jar
commons-io-1.3.1.jar
commons-lang-2_3.jar
commons-logging-1.1.1.jar
commons-pool-1.2.jar
com.noelios.restlet.ext.spring_2.5.jar
com.noelios.restlet.ext.ssl.jar
com.noelios.restlet.jar
CopyLibs/
ezmorph-1.0.6.jar
httpclient-4.1.1.jar
httpcore-4.1.jar
ibatis-2.3.4.726.jar
jaxb-api-2.1.jar
jaxb-impl-2.1.12.jar
jetty-server-9.0.0.rc0.jar
jetty-util-9.3.0.M1.jar
jsr311-api-1.1.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.9.jar
nblibraries.properties
org.eclipse.jetty.ajp.jar
org.eclipse.jetty.server.jar
org.json.jar
org.restlet-2.0.5.jar
org.restlet.ext.httpclient.jar
org.restlet.ext.jaxb_2.1.jar
org.restlet.ext.jaxrs_1.0.jar
org.restlet.ext.jetty-2.0.3.jar
org.restlet.ext.json_2.0.jar
org.restlet.ext.spring_2.5.jar
org.restlet.ext.ssl.jar
org.restlet.jar
servlet.jar
spring.jar

当我尝试执行它时 returns

信息:无法注册助手 org.restlet.ext.ssl.HttpsClientHelper java.lang.NoClassDefFoundError: org/restlet/engine/connector/ClientConnectionHelper

我已经尝试更改我的 org.restlet.jar 但是我的追随者 class..

不可能
import org.restlet.Application;
import org.restlet.Context;
import org.restlet.Filter;
import org.restlet.Redirector;
import org.restlet.Restlet;
import org.restlet.Router;
import org.restlet.ext.jaxrs.JaxRsApplication;
import org.restlet.util.Template;

public class MyJaxApplication extends JaxRsApplication {
    Filter filter;
    Context context;
    String homeUrl;

    public MyJaxApplication(Context createChildContext, Filter filter,
            String homeUrl) {
        super(createChildContext);
        this.context = createChildContext;
        this.filter = filter;
        this.homeUrl = homeUrl;
    }

    @Override
    public Restlet createRoot() {
        Router router = new Router(getContext());

        Application application = new Application(context) {
                    @Override
                    public Restlet createRoot() {
                        String target = homeUrl;
                        return new Redirector(getContext(), target,
                                        Redirector.MODE_CLIENT_TEMPORARY);
                    }
        };
        router.attach("/", application).getTemplate().setMatchingMode(
                Template.MODE_EQUALS);

        if (filter != null) {
                    filter.setNext(super.createRoot());
                    router.attach(filter);
        } else {
                    router.attach(super.createRoot());
        }
        return router;
    }

}

服务器配置:

<bean id="restletServer" class="org.restlet.ext.spring.SpringServer">  
        <constructor-arg value="https" />   
        <constructor-arg value="3442" />
        <property name="parameters">
            <props>
                <prop key="sslContextFactory">org.restlet.engine.ssl.DefaultSslContextFactory</prop>
                <prop key="keyStorePath">conf/keystore.jks</prop>
                <prop key="keyStorePassword">password</prop>
                <prop key="keyPassword">password</prop>
                <prop key="keyStoreType">JKS</prop>
            </props>
        </property>
    </bean>

帮我解决这个问题。

我建议升级到 2.3 版(如果可能的话)并为客户端连接器使用 org.restlet.ext.jetty 扩展(不推荐使用 HTTP 客户端)。

只需将其放在类路径或您的应用程序中即可。

希望对你有帮助, 蒂埃里

我在 2.3 中遇到了同样的问题,因为在 2.2 中进行了重构,其中 类 被打乱了。

终于让 HTTPS 与 2.3 一起工作了

Gradle 依赖关系:

dependencies {
    compile 'org.restlet.jse:org.restlet:2.3.7'
    compile 'org.restlet.jse:org.restlet.ext.jsslutils:2.3.7'
}

HTTPS 服务器初始化

Component = new Component();
// create server
Server server = component.getServers().add(Protocol.HTTPS, 443); 
// get server parameters
Series<Parameter> parameters = server.getContext().getParameters();
// set parameters
parameters.add("keystorePath", "cert\testServer.jks");
parameters.add("keystorePassword", "password");
parameters.add("keyPassword", "password");
parameters.add("keystoreType", "JKS");