0

我是java新手,也是cygwin。我对两者都没有详细的了解。

我需要一些帮助..

我将尝试简单的步骤来解释我的问题。

1)我正在研究 tinyOS 。其开源操作系统,用于无线传感器网络。它提供了用于通信的 Java 库(PC 到传感器)

2) 我正在通过 cigwin 开发 windows xp 环境。

3)我正在开发一个应用程序。此应用程序需要一个名为“Serial Forwarder”的 java 接口,该接口在提供的库中很容易获得。以前我曾经手动启动这个接口(通过输入命令**“java net.tinyos.sf.SerialForwarder”)**然后我的应用程序使用这个接口。但现在我想让我的应用程序独立。用户需要了解这个后台 cygwin 命令。

4)所以在我的java应用程序中我使用了

" Runtime.getRuntime().exec("java net.tinyos.sf.SerialForwarder) " 。

5)这我既没有给出任何错误也没有启动界面。

我走对了吗?
当我使用运行时执行命令时,如何确保通过 cigwin 接口调用该命令?

另外..如果我想编写.bat文件..我可以给出将执行的命令..我如何确保这些命令是通过cigwin..而不是通过cmd.exe给出的..请帮助。我 。

4

2 回答 2

0

我可能会误解或过于简单化,但您只是想从 Java 中运行 Java 程序?为什么不只是:net.tinyos.sf.SerialForwarder.main(new String[] {"foo", "bar"}); 您已经在使用 Java,只需调用该类的main()方法!

于 2010-03-26T13:28:02.160 回答
0

抱歉,但有个坏消息……带有 Cygwin 的 TinyOS 真的非常糟糕。即使您确实让事情正常运行,它也会非常缓慢且不可靠(除非 Cygwin 或 TinyOS 自从我上次使用它以来变得更好)。如果您需要在 Windows 上为 TinyOS 进行开发,我强烈建议您下载UbunTOS + VirtualBox 。

也就是说,我会尽力帮助您...希望提高您的 Java、Cygwin 和 UNIX 知识...

1.) 明白了。
2.) 也有问题。
3.)

您可以编写一个 Java 程序,该程序使用 JAR 中提供的类来执行您希望它执行的任何操作。如果您愿意,可以使用launch4j或其他一些包装器将您的程序包装为可执行文件。虽然这真的没有必要。如果愿意,您还可以创建一个调用 JAR 的 shell 脚本。

4.)

明白了。是的,调用另一个可执行文件并通过 PIPE 进行通信也是可能的,尽管仅加载类并直接与其通信可能会更快。

5.)

它可能没有做任何事情,因为您没有给它任何命令行参数,并且它返回的Process对象具有允许您与进程通信的方法 getInputStream() 和 getOutputStream() ......进程不会继续写入标准输出...它将写入管道。如果要查看进程正在写入什么,则需要从 getInputStream() 返回的流中读取。

6.)

如果您使用的是 Cygwin,请不要使用批处理文件,而是使用 BASH shell 脚本(不需要扩展名,尽管它有时会以“.sh”文件扩展名出现)。

于 2010-03-26T06:49:08.297 回答