Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Апплеты > апплет для принтера Canon


Автор: rlepricon 4.11.2014, 20:28
Привет. 

Пытаюсь написать апплет для принтера Canon.

Беру примеры из SDK, всё нормально компилируется, но при попытке загрузки в симулятор получаю ошибку:

java.lang.NoClassDefFoundError: java.applet.Applet
    at java.lang.Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;(Native Method)
    at java.lang.Class.forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;(Class.java:216)
    at com.canon.meap.csee.framework.BundleImpl.internalStart()V(Unknown Source)
    at com.canon.meap.csee.framework.BundleImpl.start()V(Unknown Source)
    at com.canon.meap.csee.service.sms.ApplicationImpl.start_normal()V(Unknown Source)
    at com.canon.meap.csee.service.sms.ApplicationImpl.start()V(Unknown Source)
    at com.canon.meap.eclipse.installer.direct.server.DirectInstallManager.startApplication(Ljava/lang/String;)V(Unknown Source)
    at com.canon.meap.eclipse.installer.direct.server.DirectInstallManager.notify(Lcom/canon/meap/eclipse/installer/direct/server/event/TriviaEvent;)V(Unknown Source)
    at com.canon.meap.eclipse.installer.InstallationStream.notifyToListeners(Lcom/canon/meap/eclipse/installer/direct/server/event/TriviaEvent;)V(Unknown Source)
    at com.canon.meap.eclipse.installer.InstallationStream.notify(Lcom/canon/meap/service/sms/event/JobEvent;)V(Unknown Source)
    at com.canon.meap.csee.service.sms.InstallJobImpl.fireEvent(Lcom/canon/meap/service/sms/event/JobEvent;)V(Unknown Source)
    at com.canon.meap.csee.service.sms.InstallJobImpl.setState(ILjava/lang/Throwable;)V(Unknown Source)
    at com.canon.meap.csee.service.sms.InstallJobImpl.setState(I)V(Unknown Source)
    at com.canon.meap.csee.service.sms.JobManager.run()V(Unknown Source)
    at java.lang.Thread.run()V(Thread.java:691)
    at java.lang.Thread.startup(Z)V(Thread.java:753)
org.osgi.framework.BundleException: Cannot load BundleActivator class : AppletActivator
    at com.canon.meap.csee.framework.BundleImpl.internalStart()V(Unknown Source)
    at com.canon.meap.csee.framework.BundleImpl.start()V(Unknown Source)
    at com.canon.meap.csee.service.sms.ApplicationImpl.start_normal()V(Unknown Source)
    at com.canon.meap.csee.service.sms.ApplicationImpl.start()V(Unknown Source)
    at com.canon.meap.eclipse.installer.direct.server.DirectInstallManager.startApplication(Ljava/lang/String;)V(Unknown Source)
    at com.canon.meap.eclipse.installer.direct.server.DirectInstallManager.notify(Lcom/canon/meap/eclipse/installer/direct/server/event/TriviaEvent;)V(Unknown Source)
    at com.canon.meap.eclipse.installer.InstallationStream.notifyToListeners(Lcom/canon/meap/eclipse/installer/direct/server/event/TriviaEvent;)V(Unknown Source)
    at com.canon.meap.eclipse.installer.InstallationStream.notify(Lcom/canon/meap/service/sms/event/JobEvent;)V(Unknown Source)
    at com.canon.meap.csee.service.sms.InstallJobImpl.fireEvent(Lcom/canon/meap/service/sms/event/JobEvent;)V(Unknown Source)
    at com.canon.meap.csee.service.sms.InstallJobImpl.setState(ILjava/lang/Throwable;)V(Unknown Source)
    at com.canon.meap.csee.service.sms.InstallJobImpl.setState(I)V(Unknown Source)
    at com.canon.meap.csee.service.sms.JobManager.run()V(Unknown Source)
    at java.lang.Thread.run()V(Thread.java:691)
    at java.lang.Thread.startup(Z)V(Thread.java:753)
Caused by: java.lang.NoClassDefFoundError: java.applet.Applet
    at java.lang.Class.forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;(Native Method)
    at java.lang.Class.forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;(Class.java:216)
    ... 14 more

никак не могу разобраться, в чём пробоема.
Подскакжите, куда копать?

Спасибо.

Автор: rlepricon 4.11.2014, 21:31
Да, решил исправиться и выложить исходники: 

Код

import java.applet.Applet;
import java.awt.Image;
import java.util.Dictionary;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import com.canon.meap.service.avs.AppletContext;
import com.canon.meap.service.avs.AppletViewerService;


/**
 * The BundleActivator implement class
 */
public class AppletActivator implements BundleActivator {

    static final String APPLET_VIEWER_SERVICE = "com.canon.meap.service.avs.AppletViewerService";

    private ServiceReference appletViewerServiceReference;

    private AppletViewerService appletViewerService;

    private String appletAlias;

    /**
     * Called when this bundle is started so the MEAP can perform the
     * bundle-specific activities necessary to start this bundle.
     */
    public void start(BundleContext context) throws Exception {
        appletViewerServiceReference = context.getServiceReference(APPLET_VIEWER_SERVICE);
        if (appletViewerServiceReference != null) {
            appletViewerService = (AppletViewerService)context.getService(appletViewerServiceReference);
        }
        if (appletViewerService != null) {
            registerApplets();
        }

    }

    /**
     * register Applets to the Applet Viewer Service
     * @throws com.canon.meap.service.avs.NamespaceException
     * 
     */
    private void registerApplets() throws com.canon.meap.service.avs.NamespaceException {
        // TODO register applets
        // modify the following code appropriately
        appletAlias = null;
        
        Applet applet = new Applet() {
            public void init() {
                System.out.println("Init...");
            }
            
            public void destroy() {
                
            }
        };
        
        String title = null;
        Image icon = null;
        Dictionary initParams = null;
        AppletContext context = null;

        appletViewerService.registerApplet(appletAlias, applet, title, icon, initParams, context);
    }

    /**
     * Called when this bundle is stopped so the MEAP can perform the
     * bundle-specific activities necessary to stop this bundle.
     */
    public void stop(BundleContext context) throws Exception {
        if (appletViewerServiceReference != null) {
            // TODO modify the following code appropriately
            appletViewerService.unregister(appletAlias);
            context.ungetService(appletViewerServiceReference);
        }
    }


}

Автор: rlepricon 2.12.2014, 11:01
Всем спасибо.
Разобрался smile.

Тему можно закрывать.
Если кому-то приспичит программировать под Canon, PM может смогу поделиться чем-нибудь полезным smile.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)