2017-07-21 5 views
0

を実行することができません私は写真をクリックしdocumentationでキャプチャクラスで提供デモ・コードを実行しようとしたが、それは私に次のエラーを与える: -カメラコードネーム一つ

java.io.UTFDataFormatException: malformed input around byte 64 
    at java.io.DataInputStream.readUTF(Unknown Source) 
    at java.io.DataInputStream.readUTF(Unknown Source) 
    at com.codename1.ui.util.Resources.loadTheme(Resources.java:1270) 
    at com.codename1.ui.util.Resources.openFileImpl(Resources.java:303) 
    at com.codename1.ui.util.Resources.openFile(Resources.java:269) 
    at com.codename1.ui.util.Resources.<init>(Resources.java:189) 
    at com.codename1.ui.util.Resources.open(Resources.java:768) 
    at com.codename1.ui.util.Resources.open(Resources.java:688) 
    at com.codename1.impl.javase.JavaSEPort$4.run(JavaSEPort.java:1556) 
    at com.codename1.ui.Display.processSerialCalls(Display.java:1152) 
    at com.codename1.ui.Display.mainEDTLoop(Display.java:969) 
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) 
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176) 
java.lang.IllegalStateException: Layout doesn't support adding with arguments: com.codename1.ui.layouts.FlowLayout 
    at com.codename1.ui.layouts.Layout.addLayoutComponent(Layout.java:64) 
    at com.codename1.ui.Container.addComponent(Container.java:557) 
    at com.codename1.ui.Form.addComponent(Form.java:1214) 
    at com.codename1.ui.Container.add(Container.java:198) 
    at com.mycompany.myapp.MyApplication.start(MyApplication.java:165) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.codename1.impl.javase.Executor$1$1.run(Executor.java:123) 
    at com.codename1.ui.Display.processSerialCalls(Display.java:1152) 
    at com.codename1.ui.Display.mainEDTLoop(Display.java:969) 
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) 
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176) 

持つUTFDataFormatExceptionがでそこに常にあります新しいhello worldプログラムもあり、今まで書いたコードの実行には影響しませんでした。しかし、IllegalStateExceptionはシミュレータのアプリケーションをクラッシュさせます。私のコードでこの例外を発生させる行も指摘していません。

+0

カメラキャプチャに使用したコードを指定します。 – Diamond

+0

@Diamondちょっと遊んでコードを実行することができました。私は見た目を持ちたいと思っていて、コメントされたコード(サンプルコード)が上記のエラーを出した理由を理解する助けになるなら、コードを書き留めました。ありがとう – Gurankas

+0

マシン上のJavaインストールを確認し、JDK 8がパスの最初のパスであり、JAVA_HOMEで定義されているパスであることを確認してください。リソースファイル自体をチェックし、デザイナで開いていない場合はサイズが0であるかどうかを確認してください。https://www.codenameone.com/blog/tip-track-designer-guibuilder-issues.html –

答えて

0

コードの周りを少し遊んで、私は正常にカメラを起動することができました。同様の問題が発生する可能性のある他の人のメリットの実行コードは次のとおりです。 -

package com.mycompany.myapp; 


import com.codename1.ui.Display; 
import com.codename1.ui.FontImage; 
import com.codename1.ui.Form; 
import com.codename1.ui.Graphics; 
import com.codename1.ui.Image; 
import com.codename1.ui.Dialog; 
import com.codename1.ui.Label; 
import com.codename1.ui.plaf.Style; 
import com.codename1.ui.plaf.UIManager; 
import com.codename1.ui.util.Resources; 
import com.codename1.capture.Capture; 
import com.codename1.io.Log; 
import com.codename1.ui.Toolbar; 
import com.codename1.ui.layouts.BorderLayout; 

import java.io.IOException; 

/** 
* This file was generated by <a href="https://www.codenameone.com/">Codename One</a> for the purpose 
* of building native mobile applications using Java. 
*/ 
public class Camera { 

    private Form current; 
    private Resources theme; 

    public void init(Object context) { 
     theme = UIManager.initFirstTheme("/theme"); 

     // Enable Toolbar on all Forms by default 
     Toolbar.setGlobalToolbar(true); 

     // Pro only feature, uncomment if you have a pro subscription 
     // Log.bindCrashProtection(true); 
    } 

    public void start() { 
     if(current != null){ 
      current.show(); 
      return; 
     } 
//  Form hi = new Form("Rounder", new BorderLayout()); 
//  Label picture = new Label("", "Container"); 
//  hi.add(BorderLayout.CENTER, picture); 
//  hi.getUnselectedStyle().setBgColor(0xff0000); 
//  hi.getUnselectedStyle().setBgTransparency(255); 
//  Style s = UIManager.getInstance().getComponentStyle("TitleCommand"); 
//  Image camera = FontImage.createMaterial(FontImage.MATERIAL_CAMERA, s); 
//  hi.getToolbar().addCommandToRightBar("", camera, (ev) -> { 
//   try { 
//    int width = Display.getInstance().getDisplayWidth(); 
//    Image capturedImage = Image.createImage(Capture.capturePhoto(width, -1)); 
//    Image roundMask = Image.createImage(width, capturedImage.getHeight(), 0xff000000); 
//    Graphics gr = roundMask.getGraphics(); 
//    gr.setColor(0xffffff); 
//    gr.fillArc(0, 0, width, width, 0, 360); 
//    Object mask = roundMask.createMask(); 
//    capturedImage = capturedImage.applyMask(mask); 
//    picture.setIcon(capturedImage); 
//    hi.revalidate(); 
//   } catch(IOException err) { 
//    Log.e(err); 
//   } 
//  }); 
     Form hi = new Form("Camera", new BorderLayout()); 
     Label picture = new Label("", "Container"); 
     hi.add(BorderLayout.CENTER,picture); 
     Style s = UIManager.getInstance().getComponentStyle("TitleCommand"); 
     Image camera = FontImage.createMaterial(FontImage.MATERIAL_CAMERA, s); 
     hi.getToolbar().addCommandToRightBar("", camera, ev -> { 
      try { 
       Image image = Image.createImage(Capture.capturePhoto()); 
       picture.setIcon(image); 
       hi.revalidate(); 
      } catch (IOException e) { 
       // TODO: handle exception 
       Log.e(e); 
      } 
     }); 
     hi.show(); 
    } 

    public void stop() { 
     current = Display.getInstance().getCurrent(); 
     if(current instanceof Dialog) { 
      ((Dialog)current).dispose(); 
      current = Display.getInstance().getCurrent(); 
     } 
    } 

    public void destroy() { 
    } 

} 
1

コードネーム1のインストールに深刻な問題があるようです。その例外は決して起こらず、メジャーが壊れていることを示します。

+0

私はこれを遠ざけることを提案しますか? – Gurankas

+0

もう一度Codename Oneをインストールすることをお勧めします。具体的には、インストールに使用するVMに注意してください。それはOracle JDK 1.8なのでしょうか?物事を問題にするかもしれない他の細部? –

+0

Eclipse MarketからCodeName Oneプラグインをアンインストールして再インストールしました。再度同じエラーが返されます。そして、はい、私のJDKはOracleのサイトからダウンロードされており、JDK 8(または1.8)です。これをなくすためにチェックしなければならないことは何ですか? – Gurankas