从 Java 应用程序调用 Cygwin
我需要从Java代码中调用Cygwin(例如:从在Linux和Windows上运行的Java应用程序中调用Cygwin中的make命令)。有人有解决这个问题的经验吗?
I need to call Cygwin from Java code ( example : to call make command in Cygwin from Java app which run on linux and windows ).Does anybody have experience with this problem ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为你必须区分 Linux 和 Windows
,在 cygwin 中使用
C:\cygwin\bin\bash.exe --login -i -c
注意:您可以使用 apache commons exec 从 java 启动外部命令
I think you have to differentiate youre code for linux and windows
C:\cygwin\bin\bash.exe --login -i -c <cmd>
note: you may use apache commons exec to lauch an external command from java
从 Java 使用 ProcessBuilder:
http://download.oracle。 com/javase/7/docs/api/java/lang/ProcessBuilder.html
您需要确保您的路径/环境设置正确,但这取决于您的计算机和设置。
另外,请注意,许多 cygwin“功能”(例如 less、awk、sed 等)只是可以直接调用的二进制文件(可执行文件)——不需要 bash shell 来方便访问这些文件。查看 bin 文件夹所在位置的实际文件(通常为 c:/cygwin/bin),并尝试直接从 ProcessBuilder 调用这些文件。如果您需要实际利用 shell(例如,管道、变量、通配符等),那么那就是一个不同的故事 - 然后您将与 bash.exe 文件本身集成(检查手册页以获取使用信息)。
Use ProcessBuilder from Java:
http://download.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html
You will need to make sure your path/environment is set up properly, but that depends on your machine and set up.
Also, note that many cygwin "capabilities" (e.g., less, awk, sed, etc) are simply binaries (executables) that you can call directly -- no need for the bash shell to facilitate access to those. Look at the actual files in wherever your bin folder is (usually c:/cygwin/bin) and try calling those directly from ProcessBuilder. If you need to actually leverage the shell (e.g., pipes, variables, globbing, etc) then that's a different story -- you would then integrate with the bash.exe file itself (check the man page for usage info).