Linux环境下Epson TM-T20III打印机XML配置报错求助
解决Linux下Epson TM-T20III JavaPOS初始化报错:The information is not described in XML
报错信息
jpos.JposException: The information is not described in XML. at jp.co.epson.upos.core.v1_14_0001.pntr.CommonPrinterService.initializeServiceSetting(CommonPrinterService.java:1468) ~[epsonjpos.jar:?] at jp.co.epson.upos.core.v1_14_0001.pntr.T88IIService.initializeServiceSetting(T88IIService.java:825) ~[epsonjpos.jar:?] at jp.co.epson.upos.T20II.pntr.T20IIService.initializeServiceSetting(T20IIService.java:81) ~[epsonjpos.jar:?] at jp.co.epson.upos.core.v1_14_0001.pntr.CommonPrinterService.open(CommonPrinterService.java:1292) ~[epsonjpos.jar:?] at jpos.BaseJposControl.open(BaseJposControl.java:538) ~[javapos-controls-1.14.2.jar:1.14.4] at com.wps.pms.epson.jpos.AbstractEpsonPrinterServiceImpl.openThePrinter(AbstractEpsonPrinterServiceImpl.java:215) ~[epsonprinterservice-2.33.0-SNAPSHOT.jar:V2.33.0-SNAPSHOT] at com.wps.pms.epson.jpos.AbstractEpsonPrinterServiceImpl.init(AbstractEpsonPrinterServiceImpl.java:252) ~[epsonprinterservice-2.33.0-SNAPSHOT.jar:V2.33.0-SNAPSHOT] at com.wps.pms.epson.jpos.AbstractEpsonPrinterServiceImpl.startPrinterCommunicationAndReturnServiceState(AbstractEpsonPrinterServiceImpl.java:268) ~[epsonprinterservice-2.33.0-SNAPSHOT.jar:V2.33.0-SNAPSHOT] at com.wps.pms.epson.jpos.AbstractEpsonPrinterServiceImpl.onStartingAndReturnState(AbstractEpsonPrinterServiceImpl.java:281) ~[epsonprinterservice-2.33.0-SNAPSHOT.jar:V2.33.0-SNAPSHOT] at com.wps.pms.service.AbstractService.startService(AbstractService.java:126) ~[service-lib-2.33.0-SNAPSHOT.jar:V2.33.0-SNAPSHOT] at com.wps.pms.localservicesmanager.service.LocalServicesManagerImpl$AsyncStartServiceTask.runTask(LocalServicesManagerImpl.java:1039) ~[localservicesmanager-2.33.0-SNAPSHOT.jar:V2.33.0-SNAPSHOT] at com.wps.pms.threading.timer.AbstractTimerTask.run(AbstractTimerTask.java:24) ~[threading-2.33.0-SNAPSHOT.jar:V2.33.0-SNAPSHOT] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_362] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_362] at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_362]
当前jpos.xml配置
<JposEntries> <JposEntry logicalName="TM-T20III"> <creation factoryClass="jp.co.epson.uposcommon.creator.EpsonJposServiceInstanceFactory" serviceClass="jp.co.epson.upos.T20II.pntr.T20IIIService"/> <vendor name="SEIKO EPSON" url="http://www.epson.com"/> <jpos category="POSPrinter" version="1.14"/> <product description="EPSON TM-T20III Printer Device Service" name="EPSON Services for JavaPOS(TM) Standard" url="http://www.epson.com"/> <prop name="PhysicalDevice" type="String" value="TM-T20III"/> <prop name="PortName" type="String" value="TM-T20III"/> <prop name="PortType" type="String" value="2"/> <prop name="PortNameType" type="String" value="0"/> <prop name="epson.tracing" type="String" value="false"/> <prop name="UsePCS" type="String" tvalue="false"/> </JposEntry> </JposEntries>
问题排查与修复
1. XML配置属性拼写错误
配置中的UsePCS属性使用了错误的属性名tvalue,正确的属性名应为value。这个错误会导致JavaPOS服务无法正确读取该配置项,触发XML信息缺失的报错。
修复后:
<prop name="UsePCS" type="String" value="false"/>
2. Linux环境下PortName配置错误
当前PortName设置为打印机型号TM-T20III,但Linux系统中USB打印机的端口路径通常为/dev/usb/lp0(或lp1等,根据实际设备编号),而非打印机名称。PortType=2对应USB端口,必须指定正确的系统设备路径。
查找正确的USB端口路径:
- 连接打印机后,执行命令查看USB设备:
ls /dev/usb/lp* - 或者通过
lsusb命令确认打印机的总线和设备号,再映射到对应的设备文件。
修改PortName为实际路径,例如:
<prop name="PortName" type="String" value="/dev/usb/lp0"/>
3. 可选:确认配置项完整性
如果修复上述问题后仍报错,可检查是否缺少必要的配置项,例如:
- 添加
DeviceName属性,值为打印机型号:<prop name="DeviceName" type="String" value="TM-T20III"/> - 确认
serviceClass与Epson JavaPOS驱动版本匹配,TM-T20III的正确服务类应为jp.co.epson.upos.T20II.pntr.T20IIIService(当前配置已正确)。
验证步骤
- 保存修改后的
jpos.xml - 确保应用程序能正确读取该配置文件(检查
jpos.xml的路径是否在JavaPOS的配置搜索路径中,或通过系统属性指定) - 重启服务并测试打印机连接
内容的提问来源于stack exchange,提问作者user21875396
相关产品推荐
相关产品推荐

