2012-03-05 101 views
1

我剛剛嘗試運行我購買的epson tm-t20打印機的示例java文件。這些類應該運行,但他們不斷給我錯誤。我已經看了8個多小時,現在我真的很沮喪。這是例外它拋出我:javaPOS將庫添加到項目中

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/xerces/parsers/DOMParser 
at jpos.config.simple.xml.AbstractXercesRegPopulator.<init>(Unknown Source) 
at jpos.config.simple.xml.XercesRegPopulator.<init>(Unknown Source) 
at jpos.config.simple.xml.SimpleXmlRegPopulator.<init>(Unknown Source) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
at java.lang.Class.newInstance0(Class.java:372) 
at java.lang.Class.newInstance(Class.java:325) 
at jpos.loader.simple.SimpleServiceManager.initRegPopulator(Unknown Source) 
at jpos.loader.simple.SimpleServiceManager.initEntryRegistry(Unknown Source) 
at jpos.loader.simple.SimpleServiceManager.init(Unknown Source) 
at jpos.loader.simple.SimpleServiceManager.<init>(Unknown Source) 
at jpos.loader.JposServiceLoader.<clinit>(Unknown Source) 
at jpos.BaseJposControl.open(Unknown Source) 
at postest.Step1Frame.processWindowEvent(Step1Frame.java:83) 
at java.awt.Window.processEvent(Window.java:2003) 
at java.awt.Component.dispatchEventImpl(Component.java:4861) 
at java.awt.Container.dispatchEventImpl(Container.java:2287) 
at java.awt.Window.dispatchEventImpl(Window.java:2713) 
at java.awt.Component.dispatchEvent(Component.java:4687) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) 
at java.awt.EventQueue.access$000(EventQueue.java:101) 
at java.awt.EventQueue$3.run(EventQueue.java:666) 
at java.awt.EventQueue$3.run(EventQueue.java:664) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
at java.awt.EventQueue$4.run(EventQueue.java:680) 
at java.awt.EventQueue$4.run(EventQueue.java:678) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) 

這裏的示例代碼中,我一直在尋找:

POSPrinterControl19 ptr = (POSPrinterControl19)new POSPrinter(); 


JPanel contentPane; 
JPanel jPanel_reciept = new JPanel(); 
TitledBorder titledBorder1; 
GridBagLayout gridBagLayout1 = new GridBagLayout(); 
GridBagLayout gridBagLayout2 = new GridBagLayout(); 
JButton jButton_Print = new JButton(); 

/**Construct "Frame"*/ 
public Step1Frame() { 
    enableEvents(AWTEvent.WINDOW_EVENT_MASK); 
    try { 
     jbInit(); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

/**Form the component*/ 
private void jbInit() throws Exception { 
    //setIconImage(Toolkit.getDefaultToolkit().createImage(Step1Frame.class.getResource("[Your Icon]"))); 
    contentPane = (JPanel) this.getContentPane(); 
    titledBorder1 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(134, 134, 134)),"Receipt"); 
    contentPane.setLayout(gridBagLayout1); 
    this.setSize(new Dimension(300, 180)); 
    this.setTitle("Step 1 Print \"Hello JavaPOS\""); 
    jPanel_reciept.setLayout(gridBagLayout2); 
    jPanel_reciept.setBorder(titledBorder1); 
    jButton_Print.setText("Print"); 
    jButton_Print.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      jButton_Print_actionPerformed(e); 
     } 
    }); 
    contentPane.add(jPanel_reciept, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 
      ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(15, 0, 0, 0), 20, 20)); 
    jPanel_reciept.add(jButton_Print, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 
      ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5, 10, 5, 10), 130, 0)); 
} 

/** 
* Outline  The processing code required in order to enable 
*   or to disable use of service is written here. 
* @exception JposException This exception is fired toward the failure of 
*       the method which JavaPOS defines. 
*/ 
/**When the window was closed*/ 
protected void processWindowEvent(WindowEvent e) { 
    super.processWindowEvent(e); 
    if (e.getID() == WindowEvent.WINDOW_CLOSING) { 
     this.closing(); 
    } 
    /**When the window open*/ 
    else if (e.getID() == WindowEvent.WINDOW_OPENED) { 
     // JavaPOS's code for Step1 
     try { 
      //Open the device. 
      //Use the name of the device that connected with your computer. 
          //ptr.clearPrintArea(); 
      ptr.open("POSPrinter"); 

      //Get the exclusive control right for the opened device. 
      //Then the device is disable from other application. 
      ptr.claim(1000); 

      //Enable the device. 
      ptr.setDeviceEnabled(true); 
     } 
     catch(JposException ex) { 
     } 
    } 
    // JavaPOS's code for Step1--END 
} 

//***********************Button************************************************* 
/** 
* Outline  The code for using the most standard method "PrintNormal" 
*    to print is described. 
*/ 
void jButton_Print_actionPerformed(ActionEvent e) { 
    // JavaPOS's code for Step1 
    try{ 
     //printNormal(int station, String data) 
     //A string is sent by using the method "printNormal", and it is printed. 
     // "\n" is the standard code for starting a new line. 
     // When the end of the line have no "\n",printing by 
     // using the method "printNormal" doesn't start, may be. 
     ptr.printNormal(POSPrinterConst.PTR_S_RECEIPT,"Hello JavaPOS\n"); 
    } 
    catch(JposException ex){ 
    } 
    // JavaPOS's code for Step1--END 
} 

//***********************Method************************************************* 
/** 
* Outline  The code to finish a service. 
*/ 
void closing(){ 
    // JavaPOS's code for Step1 
    try{ 
     //Cancel the device. 
     ptr.setDeviceEnabled(false); 

     //Release the device exclusive control right. 
     ptr.release(); 

     //Finish using the device. 
     ptr.close(); 
    } 
    catch(JposException ex){ 
    } 
    // JavaPOS's code for Step1--END 
    System.exit(0); 
} 

回答

1

你必須把一些額外的依賴庫添加到項目類路徑中,其中一人似乎是Apache xerces XML解析器,所以基本上你必須將該jar庫添加到類路徑中。

你可以找到apache xerces XML解析器here