繁体   English   中英

导出的JAR文件未检测到串行端口

[英]Exported JAR file doesn't detect serial ports

该代码段的作用是:检测所有串行端口并将端口名称打印到屏幕上。

问题:在eclipse中运行时,程序检测到串行端口正常; 但是,在导出可运行的jar并运行该jar之后,该jar检测到没有端口。 我非常怀疑这与实际代码本身有什么关系(因为它在eclipse中运行得很好),但是我将代码段放在以防万一我错过了一些东西的情况下。

我尝试过/已经完成/看过的内容:

我认为这可能只是我的计算机,所以我已经尝试在其他计算机上运行jar,但收到的结果相同。 我还确保所有内容都放在正确的位置(jar文件,.dll文件和属性文件)。 我进行了四倍检查,以确保我的构建路径包括正确的文件。

我已经浏览过: http : //www.oracle.com/technetwork/java/index-139971.html

我花了最后一个小时来搜索网站和关于类似于我的问题的问题,但是我没有找到解决方案。

这是我基于其代码的站点: http : //en.wikibooks.org/wiki/Serial_Programming/Serial_Java#JavaComm_API

问题: 为什么会这样/我该如何解决?

附加信息:我正在使用javax.comm和32位版本的jdk 1.8.0_31,运行Windows8。jar文件运行得很好(有一个单独的组件可以正常工作)。 编译(或警告)过程中没有错误,也没有引发异常。 我正在使用java -jar program.jar运行jar。 我知道我的计算机有一个串行端口,因为当我运行程序时,eclipse会显示COM1。 (该程序还能够检测并行端口,但只能在eclipse中使用)

    boolean portsDetected = false;
    Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();
    while (portIdentifiers.hasMoreElements()) {
            CommPortIdentifier pid = (CommPortIdentifier)portIdentifiers.nextElement();
        if ((pid.getPortType() == CommPortIdentifier.PORT_SERIAL)) {    
            System.out.println(pid.getName());
            portsDetected = true;
        }
    }
    if (!portsDetected) {
        System.out.println("No serial ports detected");
        return 0;
    }

如果您还有其他需要知道或想看到的东西,请询问,您将收到!

1. Copy win32.dll file to c:\ProgramFiles\java\jdk\bin
2. Copy comm.jar file to c:\ProgramFiles\java\jdk\lib
3. Copy javax.comm properties file to c:\ProgramFiles\java\jdk\lib
4. Copy 
win32com.dll  to jre/bin

comm.jar to  jre/lib/ext

java.comm.properties to jre/lib



 Note:Add all files in step 4 to both JRE.  Jre Dir and Jre in JDK folder

这解决了我的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM