2016-06-30 9 views
0

私はAndroidスタジオでAndroidアプリを開発しています。このアプリはall-javaライブラリモジュールを利用しています。私はcompile 'org.jfree:jfreesvg:3.1'を上記のjavaライブラリモジュールの依存関係に加えて、jfreesvgをインクルードしました。Android + jfreeSVG:継承の問題

そのJavaライブラリーの中で、私はSVGGraphics2Dのための主要なdocから与えられた例をしようとしています: setPaint(java.awt.Paint) in SVGGraphics2D cannot be applied to (java.awt.Color)

SVGGraphics2D g2 = new SVGGraphics2D(300, 200); 
    g2.setPaint(Color.black); 
    g2.draw(new Rectangle(10, 10, 280, 180)); 
    String svgElement = g2.getSVGElement(); 

しかし、私はAndroidのメーカー、2行目の最初のビーイングに2つのコンパイルエラーが出ます

はまた、次の行と次のエラーで、私は同じ原因を仮定し、occurrs:draw(java.awt.Paint) in SVGGraphics2D cannot be applied to (java.awt.Color)

私の質問を今は:java.awt.Paintがインターフェイスで、java.awt.Colorがそのインターフェイスの実装であるにもかかわらず、なぜそのエラーが発生しますか(そしてjava.awt.Shapejava.awt.Rectangleについても同じです)。完成さのために

:私はそれが動作することを私が混乱しているアプリを実行した場合は、私は次の例外を取得:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 
Process: [package].app, PID: 19596 
java.lang.RuntimeException: An error occured while executing doInBackground() 
    at android.os.AsyncTask$3.done(AsyncTask.java:300) 
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
    at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    at java.lang.Thread.run(Thread.java:811) 
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/jfree/graphics2d/svg/SVGGraphics2D; 
    at [package].[some.package].someMethod(Unknown) 
    at [package].app.MainActivity$SomeTask.doInBackground(MainActivity.java:67) 
    at [package].app.MainActivity$SomeTask.doInBackground(MainActivity.java:62) 
    at android.os.AsyncTask$2.call(AsyncTask.java:288) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
    at java.lang.Thread.run(Thread.java:811)  
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.jfree.graphics2d.svg.SVGGraphics2D" on path: DexPathList[[zip file "/data/app/[package].app-2.apk"],nativeLibraryDirectories=[/data/app-lib/[package].app-2, /system/lib, /vendor/lib, /system/lib]] 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
    at [package].[some.package].someMethod(Unknown)  
    at [package].app.MainActivity$SomeTask.doInBackground(MainActivity.java:67)  
    at [package].app.MainActivity$SomeTask.doInBackground(MainActivity.java:62)  
    at android.os.AsyncTask$2.call(AsyncTask.java:288)  
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
    at java.lang.Thread.run(Thread.java:811)  
    Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Graphics2D; 
    at dalvik.system.DexFile.defineClassNative(Native Method) 
    at dalvik.system.DexFile.defineClass(DexFile.java:222) 
    at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215) 
    at dalvik.system.DexPathList.findClass(DexPathList.java:322) 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54) 
     ... 11 more 
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.awt.Graphics2D" on path: DexPathList[[zip file "/data/app/[package].app-2.apk"],nativeLibraryDirectories=[/data/app-lib/[package].app-2, /system/lib, /vendor/lib, /system/lib]] 
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
     ... 16 more 
     Suppressed: java.lang.ClassNotFoundException: java.awt.Graphics2D 
    at java.lang.Class.classForName(Native Method) 
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
      ... 17 more 
Caused by: java.lang.NoClassDefFoundError: Class "Ljava/awt/Graphics2D;" not found 
      ... 21 more 
    Suppressed: java.lang.ClassNotFoundException: org.jfree.graphics2d.svg.SVGGraphics2D 
    at java.lang.Class.classForName(Native Method) 
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
     ... 10 more 
Caused by: java.lang.NoClassDefFoundError: Class "Lorg/jfree/graphics2d/svg/SVGGraphics2D;" not found 
     ... 14 more 

(私は読みやすくするためのスタックトレースを編集しました。 )

答えて

1

java.awt.*パッケージはAndroidではご利用いただけません。そのため、使用しようとしているライブラリをAndroidアプリで直接使用することはできません。少なくともそれ以上の作業は必要ありません。

これらのクラスを自分で実装するか、Apache Harmonyプロジェクトなどから別の場所からソースを取得する必要があります。