Codenameone 无法运行摄像机代号1

Codenameone 无法运行摄像机代号1,codenameone,Codenameone,我试图运行中的capture类中提供的演示代码来单击照片,但出现以下错误:- 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

我试图运行中的capture类中提供的演示代码来单击照片,但出现以下错误:-

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)
java.io.UTFDataFormatException:字节64周围的输入格式错误
位于java.io.DataInputStream.readUTF(未知源)
位于java.io.DataInputStream.readUTF(未知源)
位于com.codename1.ui.util.Resources.loadTheme(Resources.java:1270)
位于com.codename1.ui.util.Resources.openFileImpl(Resources.java:303)
位于com.codename1.ui.util.Resources.openFile(Resources.java:269)
位于com.codename1.ui.util.Resources。(Resources.java:189)
位于com.codename1.ui.util.Resources.open(Resources.java:768)
位于com.codename1.ui.util.Resources.open(Resources.java:688)
位于com.codename1.impl.javase.JavaSEPort$4.run(JavaSEPort.java:1556)
位于com.codename1.ui.Display.processSerialCalls(Display.java:1152)
位于com.codename1.ui.Display.mainEDTLoop(Display.java:969)
位于com.codename1.ui.runnablerrapper.run(runnablerrapper.java:120)
位于com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
java.lang.IllegalStateException:Layout不支持添加参数:com.codename1.ui.layouts.FlowLayout
位于com.codename1.ui.layouts.Layout.addLayoutComponent(Layout.java:64)
位于com.codename1.ui.Container.addComponent(Container.java:557)
位于com.codename1.ui.Form.addComponent(Form.java:1214)
位于com.codename1.ui.Container.add(Container.java:198)
位于com.mycompany.myapp.MyApplication.start(MyApplication.java:165)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于com.codename1.impl.javase.Executor$1$1.run(Executor.java:123)
位于com.codename1.ui.Display.processSerialCalls(Display.java:1152)
位于com.codename1.ui.Display.mainEDTLoop(Display.java:969)
位于com.codename1.ui.runnablerrapper.run(runnablerrapper.java:120)
位于com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

UTFDataFormatException也始终存在于新的hello world程序中,并且直到现在还没有影响我编写的任何代码的运行。但是IllegalStateException使模拟器中的应用程序崩溃。它也没有指向代码中引发此异常的行

您安装的Codename One似乎有严重问题。这种例外情况永远不应该发生,它表明某些重大事件已经破裂

通过几次代码游戏,我成功地启动了相机。以下是为可能遇到类似问题的其他人提供的运行代码:-

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() {
    }

}
package com.mycompany.myapp;
导入com.codename1.ui.Display;
导入com.codename1.ui.FontImage;
导入com.codename1.ui.Form;
导入com.codename1.ui.Graphics;
导入com.codename1.ui.Image;
导入com.codename1.ui.Dialog;
导入com.codename1.ui.Label;
导入com.codename1.ui.plaf.Style;
导入com.codename1.ui.plaf.UIManager;
导入com.codename1.ui.util.Resources;
导入com.codename1.capture.capture;
导入com.codename1.io.Log;
导入com.codename1.ui.Toolbar;
导入com.codename1.ui.layouts.BorderLayout;
导入java.io.IOException;
/**
*此文件是为此目的由生成的
*使用Java构建本机移动应用程序的方法。
*/
公共级摄像机{
私有形式电流;
私人资源主题;
公共void init(对象上下文){
theme=UIManager.initFirstTheme(“/theme”);
//默认情况下,在所有窗体上启用工具栏
Toolbar.setGlobalToolbar(true);
//仅限Pro功能,如果您有Pro订阅,请取消注释
//Log.bindCrashProtection(true);
}
公开作废开始(){
如果(当前!=null){
current.show();
返回;
}
//表格hi=新表格(“圆形”,新边框布局());
//标签图片=新标签(“,“容器”);
//hi.add(BorderLayout.CENTER,图片);
//hi.getUnselectedStyle().setBgColor(0xff0000);
//hi.getUnselectedStyle().SetbGTTransparency(255);
//样式s=UIManager.getInstance().getComponentStyle(“标题命令”);
//Image camera=FontImage.createMaterial(FontImage.MATERIAL_camera,s);
//hi.getToolbar().addCommandToRightBar(“”,摄像头,(ev)->{
//试一试{
//int width=Display.getInstance().getDisplayWidth();
//Image capturedImage=Image.createImage(Capture.capturePhoto(宽度,-1));
//Image-roundMask=Image.createImage(宽度,capturedImage.getHeight(),0xff000000);
//Graphics gr=roundMask.getGraphics();
//gr.setColor(0xffffff);
//gr.fillArc(0,0,宽度,宽度,0,360);
//对象掩码=roundMask.createMask();
//capturedImage=capturedImage.applyMask(掩码);
//图片。设置图标(capturedImage);
//hi.revalidate();
//}捕获(IOException err){
//Log.e(err);
//            }
//        });
表单hi=新表单(“摄影机”,新边框布局());
标签图片=新标签(“,“容器”);
hi.add(BorderLayout.CENTER,picture);
样式s=UIManager.getInstance().getComponentStyle(“标题命令”);
Image camera=FontImage.createMaterial(FontImage.MATERIAL_camera,s);
hi.getToolbar().addCommandToRightBar(“”,摄像头,ev->{
试一试{
Image=Image.createImage(Capture.capturePhoto());
图片。设置图标(图像);
hi.revalidate();
}捕获(IOE异常){
//TODO:处理异常
Log.e(e);
}
});
嗨,show();
}
公共停车场(){
当前=Display.getInstance().getCurrent();
如果(当前)