Jersey ClientBuilder.newClient (): fonte não encontrada
Eu tenho um aplicativo Eclipse Java de 64 bits com o Eclipse em execução no Windows 7 Pro x64.
Eu baixei oJersey pacote, jaxrs-ri-2.7.zip, para acesso à API RESTful do cliente.
Adicionei esses frascos externos (Projeto | Caminho de Construção | Configurar Caminho de Construção ... | Bibliotecas):
jaxrs-ri/api/javax.ws.rs-api-2.0.jar
jaxrs-ri/lib/jersey-client.jar
jaxrs-ri/lib/jersey-common.jar
Aqui está a fonte:
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();
}
}
Recebo o seguinte erro, ao passar pela primeira linha, Clinet oClient ...:
Source not found.
Por que o erro e como corrigi-lo? Por que "origem não encontrada" em vez de um erro real.
Nota: Tentei copiar os 3 arquivos jar para a pasta lib do projeto, mas isso não adiantou. Estou usando o depurador Eclipse, pressionando F11 no modo de exibição de depuração e, em seguida, executando um F6 na linha.
ATUALIZAR:
Tentei criar um novo aplicativo de 32 bits (janela do aplicativo WindowBuilder SWT) e simplesmente atualizei main (...) e o mesmo problema. Isso significa que o problema é independente da plataforma.
ATUALIZAÇÃO 2:
A resposta postada para tentar executar não era uma má idéia. :-) Isso deu outra pista, que eu tenho que rastrear. Aqui está o lixão.
Exception in thread "main" java.lang.NoClassDefFoundError: org/glassfish/hk2/utilities/binding/AbstractBinder
at org.glassfish.jersey.client.ClientConfig.<init>(ClientConfig.java:452)
at org.glassfish.jersey.client.JerseyClientBuilder.<init>(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
RESPOSTA FINAL: (Obrigado pelas duas respostas pela ajuda.)
Eu estava perdendo dependências. A lista necessária é:
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