2015-01-27 2 views
2

Предполагается, что этот фрагмент кода должен делать: Обнаруживать все последовательные порты и печатать имена портов на экране.Экспортированный JAR-файл не обнаруживает последовательные порты

Проблема: При запуске в затмении программа обнаруживает последовательные порты в порядке; однако, после экспорта сточной банки и запуска банки, банка обнаруживает NO порты. Я очень сомневаюсь, что это имеет какое-то отношение к самому самому коде (поскольку он отлично работает в eclipse), но я поставил фрагмент на всякий случай, когда я что-то пропустил.

Что я пробовал/сделано/посмотрел на:

Я считал, что это может быть просто мой компьютер, так что я уже попытался запустить банку на другом компьютере, но получил тот же Результаты. Я также убедился, что все в нужном месте (файл 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 с, работает Windows 8. Файл баночки работает просто отлично (есть отдельный компонент к нему, который работает отлично). Нет ошибок во время компиляции (или предупреждений), и никаких исключений не возникает. Я запускаю банку, используя java -jar program.jar. Я знаю, что у моего компьютера есть последовательный порт, потому что eclipse показывает COM1, когда я запускаю программу. (Программа также способна обнаруживать параллельные порты, но только в затмении)

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; 
    } 

Если есть все, что нужно знать, или хотел бы видеть, просите, и получите!

+0

ли вы понять это? У меня такая же проблема –

+0

@UsmanRiaz Я не понял это - на самом деле я отказался от проблемы и передал ее другому человеку. – Aify

ответ

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 

Это решило мою проблему

Смежные вопросы