在Windows 64上从Java使用串口 - 以及访问限制?

时间:2011-07-22 12:18:41

标签: java serial-port windows-7-x64

我有一个正确访问Windows XP上的串行端口的Java程序,并且我试图让它在我的Windows 7(Home Premium)框中运行。我正在Eclipse中开发。

该程序目前使用rxtx类。我的原始下载(对于xp)似乎是32位特定的,所以我得到了Cloudhopper 64位实现并将其放在指定的目录中(在与安装说明匹配的范围内)并将jar添加为外部jar到我的项目。

我现在对rxtx jar中任何类的使用都有以下错误:

  

由于限制,Y类型的字段X无法访问   必需的库c:\ Program Files \ Java \ jre6 \ lib \ ext \ RXTXcomm.jar

我在错误上发现的是访问限制与Java许可协议有关;所有这些类都在java包之外,所以我不明白那个问题是什么。我想,但如果我能解决问题而不理解它,我想我会。

我找到了几个论坛帖子,几乎没有比几年前更多,声称通过

来解决问题
  1. 从构建路径中删除JRE库并重新添加它。这对我的情况没有影响。

  2. 消除了eclipse偏好中的错误和警告错误;再一次,没有帮助。

  3. 我找到了一个商业软件包可能能够以数百美元的价格完成这项工作,但我只是在开发一个我自己的项目,可能永远不会产生任何收入,所以它不值得数百美元美元给我买东西为此目的。此外,似乎开源社区中的某些东西如此接近。

    所以我的问题有两个层次:

    1. 有人可以帮我解决Cloudhopper的rxtx实现的访问限制,对于eclipse Indigo中的Java 6吗?

    2. 是否有另一种方法可以使用Java访问Windows 7上的串行端口更容易/更好/至少没有访问限制问题?

3 个答案:

答案 0 :(得分:1)

我认为现在必定是这个非java包的库在JRE的空间,尽管我还没有验证过。无论如何,我把它移出然后,在注意到我认为在一个项目中出错的东西是不同项目中的错误,这是因为第二个项目没有将其列为所需的库,这有助于很多。

这个和我之前的32位之间确实存在一些细微的差别 - 用eclipse的帮助需要15-30分钟来理顺 - 但我现在正在阅读我的设备! / p>

答案 1 :(得分:0)

根据您的描述,这听起来像使用sun。*包时的标准编译器错误。在处理重用Sun的Base64类的程序时,我已经遇到过这种情况。

基本上,您正在访问JRE的内部 - 这些内容不需要在发行版之间保持一致,并且不打算由Sun / Oracle之外的开发人员访问。您可以在Eclipse中禁用此错误,或将其降级为警告,但它有充分的理由警告您。如果您将其更改为警告或在Eclipse中忽略它,您仍然可以编译和使用您的程序,但您应该考虑编写自己的库来提供相同的功能或寻找第三方库。否则,JRE更新可能会破坏您的程序。

您提到您已经尝试禁用此警告,但它没有任何效果 - 之后您是否执行了干净的构建?试试Project->Clean...,看看是否还有错误。

答案 2 :(得分:0)

解决方案--- A

  1. 转到项目属性中的“构建路径”设置。
  2. 删除JRE系统库
  3. 加回来;选择“添加库”并选择JRE系统库。     默认设置也适用于我的朋友。     它的工作原理是因为我们在不同的jar文件中有多个类。删除和重新添加jre lib将使正确的类成为第一个。     如果您想要一个基本的解决方案,请确保使用相同的类排除jar文件。
  4. 解决方案---乙

    1. 转到项目属性中的“构建路径”设置。 Windows -> Preferences -> Java Compiler
    2. 删除JRE系统库
    3. 添加另一个“完美匹配”的JRE
    4. 再次清理并构建项目。