Jersey ClientBuilder.newClient (): source introuvable
J'ai un Java 64 bits Eclipse application avec Eclipse en cours d'exécution sur Windows 7 Pro x64.
J'ai téléchargé le Jersey bundle, jaxrs-ri-2.7.zip pour client API RESTful d'accès.
J'ai ajouté ces pots (Project | Build Path | Configure Build Path... | Bibliothèques):
jaxrs-ri/api/javax.ws.rs-api-2.0.jar
jaxrs-ri/lib/jersey-client.jar
jaxrs-ri/lib/jersey-common.jar
Voici la source:
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();
}
}
Je reçois l'erreur suivante, lorsque le pied sur la première ligne, Clinet oClient...:
Source not found.
Pourquoi l'erreur et comment la corriger? Pourquoi "source not found" au lieu d'une véritable erreur.
Note: j'ai essayé de copier les 3 fichiers jar du projet dossier lib, mais qui ne fera aucun bien. Je suis en utilisant le débogueur Eclipse, donc en appuyant sur F11 en vue de débogage et ensuite de faire un F6-dessus de la ligne.
Mise à JOUR:
J'ai essayé de créer une marque nouvelle application 32 bits (WindowBuilder SWT fenêtre de l'application) et simplement mis à jour principale(...), et même problème. Cela signifie que le problème est indépendant de la plateforme.
Mise à JOUR 2:
Affichées en réponse à essayer de course n'était pas une mauvaise idée. 🙂 Qui a donné une autre idée, que je dois retrouver. Voici le dump.
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
RÉPONSE FINALE:
(Merci pour les deux réponses pour l'aider.)
J'ai été dépendances manquantes. La liste des besoins est:
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
source d'informationauteur Sarah Weinberger
Vous devez vous connecter pour publier un commentaire.
Ma conjecture est que "Source not found" est simplement un message à partir d'Eclipse vous dire qu'il ne peut pas déboguer dans
Client oClient = ClientBuilder.newClient();
que vous n'avez pas le code source pour les trois pots attaché dans Eclipse. Si vous venez d'exécuter le programme (sans débogage), il pourrait très bien le travail. Lire plus ici sur la façon d'ajouter le code source pour les fichiers jar dans Eclipse: Est-il un moyen facile pour attacher la source dans Eclipse?.Si cela ne fonctionne toujours pas, je vous suggère d'ajouter tous les pots du bundle que vous avez téléchargé assurez-vous de ne pas manquer de certains de dépendance.
Il vous manque de l'hk2 api jar qui contient la classe org.glassfish.hk2.utilitaires.de liaison.AbstractBinder
http://mvnrepository.com/artifact/org.glassfish.hk2/hk2-api
Bonne version de
javax.ws.rs-api
etjersey-client
permettra de résoudre la classe pas trouvé question.