2009-08-20 105 views

回答

0

首先,您必须将bash.exe设置为环境变量,以便此行将启动bash。

Runtime rt= Runtime().getRuntime().execute("bash"); 
2

与其使用Java来启动Cygwin来调用nutch,你应该考虑直接将Nutch与Java应用程序集成。还有一些文档here

“虽然Nutch的web应用程序是开始使用搜索一个伟大的方式,使用Nutch的大部分项目都需要搜索功能将更加紧密地与他们的应用程序集成有各种不同的方式来实现这一目标。 ,这取决于应用程序。我们在这里看到的两种方法是使用Nutch API和使用OpenSearch API。“

+0

安装了Cygwin没有Cygwin的开始。如果你的意思是cygwin批处理文件,那只是运行bash。 – 2009-08-20 17:06:22

+0

@尼尔:是的,我的意思是运行bash以启动Nutch。 – Adamski 2009-08-20 17:29:54

+0

...虽然看到Havenard的答案,但我想我的意思是“不要用Java来启动另一个可执行文件”。 – Adamski 2009-08-20 17:30:56

0

如同任何常规的Windows控制台应用程序一样,您可以在不传递Cygwin的情况下使用任何Cygwin程序。看看Cygwin \ bin \ dir。您甚至可以将您想要的程序带到您的应用程序目录,并且您将带有它们的CYGWIN1.DLL副本。

+2

请注意,Cygwin DLL是GPL许可的。如果您想在自己的代码中使用Cygwin功能,您的代码必须也是GPL,或者您需要从Red Hat购买非GPL许可证。 – 2009-08-20 17:05:10

0

一个更有趣,更聪明的事情就是从Cygwin启动Nutch或使用真正的Linux/Unix系统。

0

如果你想运行需要cygwin1.dll(包括大多数命令可以从Cygwin的bash shell中运行),那么你可以通过在PATH环境变量指定的cygwin \ bin目录中运行二进制像这样:

Process p = Runtime.getRuntime().exec(
     "C:/path/to/cygwin/binary.exe", new String[] { "PATH=C:\\cygwin\\bin" }); 

这里假设你在C:\cygwin