当前位置:  开发笔记 > 编程语言 > 正文

Jersey ClientBuilder.newClient():找不到源代码

如何解决《JerseyClientBuilder.newClient():找不到源代码》经验,为你挑选了3个好方法。

我有一个Java 64位Eclipse应用程序,Eclipse在Windows 7 Pro x64上运行.

我下载了Jersey软件包jaxrs-ri-2.7.zip,用于客户端RESTful API访问.

我添加了这些外部jar(项目|构建路径|配置构建路径... |库):

jaxrs-ri/api/javax.ws.rs-api-2.0.jar
jaxrs-ri/lib/jersey-client.jar
jaxrs-ri/lib/jersey-common.jar

这是来源:

package prjTestJersey;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;

public static void main(String[] args)
{
    try
    {
        Client oClient = ClientBuilder.newClient();

        oClient.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

踩到第一行时,我收到以下错误:Clinet oClient ......:

Source not found.

为什么错误以及如何解决?为什么"找不到源"而不是真正的错误.

注意:我尝试将3个jar文件复制到项目的lib文件夹中,但这没有任何好处.我正在使用Eclipse调试器,因此在调试视图中按F11,然后在线上执行F6.

更新:

我尝试创建一个全新的32位应用程序(WindowBuilder SWT应用程序窗口)并简单地更新main(...),同样的问题.这意味着问题与平台无关.

更新2:

发布的尝试运行的答案并不是一个坏主意.:-)这给了另一条线索,我必须追查.这是转储.

Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/AbstractBinder
    at org.glassfish.jersey.client.ClientConfig.(ClientConfig.java:452)
    at org.glassfish.jersey.client.JerseyClientBuilder.(JerseyClientBuilder.java:94)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:116)
    at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:206)
    at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:86)
    at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:114)
    at AppMain.main(AppMain.java:20)
Caused by: java.lang.ClassNotFoundException: org.glassfish.hk2.utilities.binding.AbstractBinder
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 12 more

最终答案:(感谢这两个答案的帮助.)

我缺少依赖项.需要的清单是:

swt_win32_x86.jar
api/javax.ws.rs-api-2.0.jar
ext/jersey-guava-2.7.jar
ext/hk2-api-2.2.0.jar
lib/jersey-common.jar
lib/jersey-client.jar

JamesB.. 9

你错过了包含org.glassfish.hk2.utilities.binding.AbstractBinder类的hk2 api jar

http://mvnrepository.com/artifact/org.glassfish.hk2/hk2-api



1> JamesB..:

你错过了包含org.glassfish.hk2.utilities.binding.AbstractBinder类的hk2 api jar

http://mvnrepository.com/artifact/org.glassfish.hk2/hk2-api



2> 小智..:

仅适用于gradle用户。

权版本javax.ws.rs-apijersey-client将解决找不到类的问题。

compile group: 'javax.ws.rs', name: 'javax.ws.rs-api', version: '2.1-m01'
compile group: 'org.glassfish.jersey.core', name: 'jersey-client', version: '2.24.1'



3> joscarsson..:

我的猜测是"Source not found"只是来自Eclipse的消息告诉你它无法调试,Client oClient = ClientBuilder.newClient();因为你没有Eclipse中附加的三个jar的源代码.如果你只是运行程序(没有调试)它可能会很好地工作.在这里阅读更多关于如何在Eclipse中向jar文件添加源代码的内容:是否有一种在Eclipse中附加源代码的简单方法?.

如果它仍然不起作用,我建议添加你下载的包中的所有罐子,以确保你没有遗漏一些依赖.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有