简体   繁体   中英

Provider org.glassfish.jersey.client.JerseyClientBuilder could not be instantiated

I have a Android project that implements the Jersey client. I am presented the an exception when I execute the line:

Client client = ClientBuilder.newClient();

Here are my gradle dependencies:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'androidx.preference:preference:1.1.0'
    implementation 'org.glassfish.jersey.core:jersey-client:2.28'
    implementation 'org.glassfish.jersey.media:jersey-media-jaxb:2.28'
    implementation 'javax.xml.bind:jaxb-api:2.3.1'
    implementation 'com.sun.xml.bind:jaxb-core:2.3.0.1'
    implementation 'com.sun.xml.bind:jaxb-impl:2.3.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

I have a project configured in Eclipse that also uses the client, with the same imports as the Android project, that works just fine.

Here is the exception:

    java.lang.RuntimeException: java.lang.ClassNotFoundException: Provider org.glassfish.jersey.client.JerseyClientBuilder could not be instantiated: java.lang.reflect.InvocationTargetException
        at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:86)
        at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:97)
        at za.co.ezimax.client.RestExecutor.execute(RestExecutor.java:23)
        at za.co.ezimax.client.RestClient.resetUserPassword(RestClient.java:43)
        at za.co.ezimax.resetpassword.ResetPasswordActivity.resetPassword(ResetPasswordActivity.java:62)
        at za.co.ezimax.resetpassword.ResetPasswordActivity.lambda$onCreate$0$ResetPasswordActivity(ResetPasswordActivity.java:42)
        at za.co.ezimax.resetpassword.-$$Lambda$ResetPasswordActivity$yT5tltpKfEUxjtl2fzaBIET-T-Y.onClick(lambda)
        at android.view.View.performClick(View.java:5106)
        at android.view.View$PerformClick.run(View.java:20329)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5912)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
     Caused by: java.lang.ClassNotFoundException: Provider org.glassfish.jersey.client.JerseyClientBuilder could not be instantiated: java.lang.reflect.InvocationTargetException
        at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:94)
        at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:185)
        at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:70)
        at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:97) 
        at za.co.ezimax.client.RestExecutor.execute(RestExecutor.java:23) 
        at za.co.ezimax.client.RestClient.resetUserPassword(RestClient.java:43) 
        at za.co.ezimax.resetpassword.ResetPasswordActivity.resetPassword(ResetPasswordActivity.java:62) 
        at za.co.ezimax.resetpassword.ResetPasswordActivity.lambda$onCreate$0$ResetPasswordActivity(ResetPasswordActivity.java:42) 
        at za.co.ezimax.resetpassword.-$$Lambda$ResetPasswordActivity$yT5tltpKfEUxjtl2fzaBIET-T-Y.onClick(lambda) 
        at android.view.View.performClick(View.java:5106) 
        at android.view.View$PerformClick.run(View.java:20329) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5912) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
        at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:90)
        at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:185) 
        at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:70) 
        at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:97) 
        at za.co.ezimax.client.RestExecutor.execute(RestExecutor.java:23) 
        at za.co.ezimax.client.RestClient.resetUserPassword(RestClient.java:43) 
        at za.co.ezimax.resetpassword.ResetPasswordActivity.resetPassword(ResetPasswordActivity.java:62) 
        at za.co.ezimax.resetpassword.ResetPasswordActivity.lambda$onCreate$0$ResetPasswordActivity(ResetPasswordActivity.java:42) 
        at za.co.ezimax.resetpassword.-$$Lambda$ResetPasswordActivity$yT5tltpKfEUxjtl2fzaBIET-T-Y.onClick(lambda) 
        at android.view.View.performClick(View.java:5106) 
        at android.view.View$PerformClick.run(View.java:20329) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5912) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 
     Caused by: java.lang.NoClassDefFoundError: org.glassfish.jersey.model.internal.-$$Lambda$_yDVjAJwmPAQhS-G6o52AiDozCY
        at org.glassfish.jersey.model.internal.CommonConfig.<clinit>(CommonConfig.java:68)
        at org.glassfish.jersey.client.ClientConfig$State.<init>(ClientConfig.java:136)
        at org.glassfish.jersey.client.ClientConfig.<init>(ClientConfig.java:491)
        at org.glassfish.jersey.client.JerseyClientBuilder.<init>(JerseyClientBuilder.java:76)
        at java.lang.reflect.Constructor.newInstance(Native Method) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
        at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:90) 
        at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:185) 
        at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:70) 
        at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:97) 
        at za.co.ezimax.client.RestExecutor.execute(RestExecutor.java:23) 
        at za.co.ezimax.client.RestClient.resetUserPassword(RestClient.java:43) 
        at za.co.ezimax.resetpassword.ResetPasswordActivity.resetPassword(ResetPasswordActivity.java:62) 
        at za.co.ezimax.resetpassword.ResetPasswordActivity.lambda$onCreate$0$ResetPasswordActivity(ResetPasswordActivity.java:42) 
        at za.co.ezimax.resetpassword.-$$Lambda$ResetPasswordActivity$yT5tltpKfEUxjtl2fzaBIET-T-Y.onClick(lambda) 
        at android.view.View.performClick(View.java:5106) 
        at android.view.View$PerformClick.run(View.java:20329) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5912) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 

This page may help you more.

Import RESTEasy client with specific version number as of your resteasy.

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-client</artifactId>
    <version>3.0.2.Final</version>
</dependency>

This will provide necessary classes to build client for sending RESTful requests.

If still you get any error then use following classes :

ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target("http://localhost:8080/RESTEasyApplication/user-management/users");
Response response = target.request().get();
String value = response.readEntity(String.class);
System.out.println(value);
response.close();  

It will solve the error.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM