简体   繁体   中英

When using Jersey for restful api in Android app I get this error:

  1. Here is the code that i am using :

     import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.io.File; import java.io.IOException; import java.util.logging.Logger; import java.io.FileInputStream; import java.io.FileNotFoundException; import org.apache.commons.codec.binary.Base64; public class Fragment_2 extends Fragment { static Logger logger = Logger.getLogger(Fragment_2.class.getSimpleName()); public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ new Thread(new Runnable() { public void run() { try { String base64 = null; String imageDataString2 = null; File file = new File("/mnt/sdcard/DCIM/Camera/2013-03-27 00.22.48.jpg"); try { // Reading a Image file from file system FileInputStream imageInFile = new FileInputStream(file); byte imageData[] = new byte[(int) file.length()]; imageInFile.read(imageData); // Converting Image byte array into Base64 String String imageDataString = new String(Base64.encodeBase64(imageData)); imageDataString2 = imageDataString.replace("_", "/"); imageDataString2 = imageDataString2.replace("-", "+"); System.out.println(imageDataString2); base64 = imageDataString2; System.out.println("Image Successfully Manipulated!"); } catch (FileNotFoundException e) { System.out.println("Image not found" + e); } catch (IOException ioe) { System.out.println("Exception while reading the Image " + ioe); } ClientConfig config = new DefaultClientConfig(); Client client = Client.create(config); WebResource service = client.resource(UriBuilder.fromUri("http://xxxxxx:8080/api").build());//change it to the latest URL Form f = new Form(); f.add("img",base64 ); String s = service.post(String.class, f); } catch (Exception e) { } } }).start(); return inflater.inflate(R.layout.fragment_2, container, false); } } 

and here is the error:

03-28 03:50:24.569: W/dalvikvm(20989): Link of class 'Lcom/sun/jersey/core/osgi/OsgiRegistry;' failed
03-28 03:50:24.569: W/dalvikvm(20989): VFY: unable to resolve static method 5977: Lcom/sun/jersey/core/osgi/OsgiRegistry;.getInstance ()Lcom/sun/jersey/core/osgi/OsgiRegistry;
03-28 03:50:24.569: W/dalvikvm(20989): Link of class 'Lcom/sun/jersey/core/osgi/OsgiRegistry;' failed
03-28 03:50:24.569: W/dalvikvm(20989): VFY: unable to find class referenced in signature (Lcom/sun/jersey/core/osgi/OsgiRegistry;)
03-28 03:50:27.379: W/dalvikvm(20989): Exception Ljava/lang/NullPointerException; thrown while initializing Lcom/sun/jersey/core/header/MediaTypes;
03-28 03:50:27.379: W/dalvikvm(20989): threadid=9: thread exiting with uncaught exception (group=0x40018578)
03-28 03:50:27.399: E/AndroidRuntime(20989): FATAL EXCEPTION: Thread-10
03-28 03:50:27.399: E/AndroidRuntime(20989): java.lang.ExceptionInInitializerError
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.core.spi.factory.MessageBodyFactory.getMessageBodyWriterMediaTypes(MessageBodyFactory.java:444)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.api.client.RequestWriter.getMediaType(RequestWriter.java:324)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:282)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:213)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.api.client.Client.handle(Client.java:648)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:680)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.api.client.WebResource.post(WebResource.java:251)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.example.programming_fragments.Fragment_2$1.run(Fragment_2.java:91)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at java.lang.Thread.run(Thread.java:1019)
03-28 03:50:27.399: E/AndroidRuntime(20989): Caused by: java.lang.NullPointerException
03-28 03:50:27.399: E/AndroidRuntime(20989):    at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119)
03-28 03:50:27.399: E/AndroidRuntime(20989):    at com.sun.jersey.core.header.MediaTypes.<clinit>(MediaTypes.java:65)
03-28 03:50:27.399: E/AndroidRuntime(20989):    ... 10 more

What should I do?

im not sure this is right solution

according to Jersey deps you need to have jersey-json module in your dependencies/classpath.

The library will be recognised if its name is libitv.so and is placed in libs\\armeabi directory in your application directory, before the .apk is built.

Sometimes when the library is not copied completely(partial copy), due to some system issues the partial library too will not be recognized.

For more details refer here

try this link have some solution

update:

java.lang.ExceptionInInitializerError

Caused by: java.lang.UnsatisfiedLinkError: Library jniavutil not found

You need to install libFLAC in addition to libsndfile. You can probably install libFLAC using whatever method you used to get libsndfile installed...

You have missed out the importent bits from the ddms log. Look for a line that includes "caused by" and/or include more of the exception log so we can have a look at it.

You've compiled with CodePro coverage enabled. Turn it off.

Actually this is the problem we are facing with ADT 17 you have to put your jar file into libs folder in order to overcome this exception

so right click on your project -->create a folder with name libs

and follow this step in

 right click (on libs folder) -->import-->File System-->browse to select your jar file and hit finish and run you project.

after that

 right click on the project --> Built Path-->java built path-->add jars select your jar file from your libs folder

if this also didn't work rebuilding everything (included data), and it will works.

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