использование последовательного порта из Java на Windows 64 - и ограничения доступа? - PullRequest
1 голос
/ 22 июля 2011

У меня есть программа на Java, которая правильно обращается к последовательному порту в Windows XP, и пытаюсь заставить его работать на моем Windows 7 (Home Premium).Я занимаюсь разработкой в ​​Eclipse.

В настоящее время программа использует классы rxtx.Моя оригинальная загрузка (для xp), кажется, специфична для 32-битной версии, поэтому я получил 64-битную реализацию Cloudhopper и поместил ее в указанные каталоги (в той степени, в которой они соответствуют инструкциям по установке) и добавил jar как внешнийjar для моего проекта.

У меня теперь есть следующая ошибка при любом использовании классов из rxtx jar:

Поле X из типа Y недоступно из-за ограниченияв необходимой библиотеке c: \ Program Files \ Java \ jre6 \ lib \ ext \ RXTXcomm.jar

Что я обнаружил в ошибке, так это то, что ограничение доступа как-то связано с Javaлицензионное соглашение;Все эти классы находятся за пределами пакета Java, поэтому я не понимаю, в чем проблема.Я хотел бы, хотя, если я смогу решить проблему, не понимая ее, я полагаю, что смогу.

Я нашел несколько сообщений на форуме, не более недавних, чем пару лет назад, с целью решить эту проблему с помощью

  1. исключение библиотеки JRE из пути сборки и ее повторное добавление.Это не имело никакого эффекта в моем случае.

  2. устранение ошибки в настройках затмения для ошибок и предупреждений;опять же, без помощи.

Я нашел коммерческий пакет, который мог бы сделать это за сотни долларов, но я просто работаю над собственным проектом, который, вероятно,никогда не приносить никакого дохода, и поэтому для меня не стоит покупать сотни долларов для этой цели.Кроме того, кажется, что что-то в сообществе открытого кода так близко.

Так что мой вопрос имеет два уровня:

  1. Может кто-нибудь помочь мне с ограничением доступа кРеализация CloudXpper rxtx, для Java 6 в eclipse Indigo?

  2. Есть ли другой способ получить доступ к последовательным портам в Windows 7 с помощью Java, который проще / лучше / по крайней мере, не делает?есть проблемы с ограничением доступа?

Ответы [ 3 ]

1 голос
/ 23 июля 2011

Я думаю, что теперь это был тот факт, что эта библиотека не-java-пакета была в пространстве JRE, хотя я этого не проверял.Во всяком случае, я переместил его, а затем, заметив, что вещи, которые я считал ошибками в одном проекте, были ошибками в другом проекте, вызванными тем, что второй проект не перечислил это как нужную ему библиотеку, что помоглоlot.

Оказывается, есть пара незначительных различий между этим и 32-битным, который у меня был раньше - потребовалось 15-30 минут, чтобы выправиться с помощью затмения - но я сейчасчитая мое устройство!

0 голосов
/ 01 сентября 2012

Решение --- A

  1. Перейти к настройкам пути сборки в свойствах проекта.
  2. Удалить системную библиотеку JRE
  3. Добавить обратно; Выберите «Добавить библиотеку» и выберите Системную библиотеку JRE. По умолчанию сработало и для моих друзей. Это работает, потому что у нас есть несколько классов в разных файлах jar. Удаление и повторное добавление jre lib сделает правильные классы первыми. Если вы хотите фундаментальное решение, убедитесь, что вы исключаете файлы JAR с теми же классами.

Решение --- B

  1. Перейти в настройки пути сборки в свойствах проекта. Windows -> Preferences -> Java Compiler
  2. Удалить системную библиотеку JRE
  3. Добавить еще одну JRE с "идеальным соответствием"
  4. Очистите и постройте свой проект снова.
0 голосов
/ 22 июля 2011

Из того, что вы описали, это звучит как стандартная ошибка компилятора при использовании пакета sun. *. У меня было такое, когда я работал над программой, в которой повторно использовались классы Sun Base64.

По сути, вы получаете доступ к внутренним компонентам JRE, которые не обязаны согласовываться между выпусками и не предназначены для доступа разработчиков за пределами Sun / Oracle. Вы можете отключить эту ошибку в Eclipse или понизить ее до предупреждения, но оно предупреждает вас по уважительной причине. Если вы измените его на предупреждение или проигнорируете его в Eclipse, вы все равно сможете скомпилировать и использовать свою программу, но вам следует подумать о написании собственной библиотеки, которая предоставляет те же функциональные возможности, или о поиске сторонней библиотеки. В противном случае обновление JRE может сломать вашу программу.

Вы упоминаете, что вы уже пытались отключить это предупреждение, и оно не дало никакого эффекта - вы впоследствии выполнили чистую сборку? Попробуйте Project->Clean... и посмотрите, по-прежнему ли вы получаете эту ошибку.

...