我想编写Java代码来运行的wget从服务器获取的图像
我相信我的wget正确安装。 如果键入:
wget http://insitu.fruitfly.org/insitu_image_storage/img_dir_38/insitu38795.jpe
我发现在我的用户帐户文件夹中的图像。
下面的Java代码是在Ubuntu上正常工作,但我不得不在移动项目OSX(山狮)
import java.io.*;
import java.io.IOException;
public class runWget
{
public static void main (String args[])
{
String whatToRun = "wget http://insitu.fruitfly.org/insitu_image_storage/img_dir_38/insitu38795.jpe";
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(whatToRun);
int exitVal = proc.waitFor();
System.out.println("Process exitValue:" + exitVal);
} catch (Throwable t)
{
t.printStackTrace();
}
}
}
当我尝试在OSX上运行它,我得到的运行时错误:
产生java.io.IOException:不能运行程序“的wget”:错误= 2,没有这样的文件或目录
我将不胜感激,如果有人能告诉我什么,我做错了。
如果wget
确实是你的OS X系统上安装,然后尝试指定它的完整路径。
尝试:
它的wget
在命令行,然后用你的Java应用程序,完全合格的路径。
String whatToRun = "/usr/local/bin/wget http://insitu.fruitfly.org/insitu_image_storage/img_dir_38/insitu38795.jpe";
漂亮明显, wget
默认情况下不会在OS X安装
更有趣的东西是写像wget自己的功能。
URL url = new URL("http://insitu.fruitfly.org/insitu_image_storage/img_dir_38/insitu38795.jpe");
InputStream in = url.openStream();
OutputStream os = new FileOutputStream(new File("picture.jpe"));
byte byffer[] = new byte[1024];
int nBytesRead;
while ((nBytesRead = in.read(buffer)) != -1)
{
os.write(buffer, 0, nBytesRead);
}
os.flush();
os.close();
in.close();
这些答案都不解释你的实际问题是什么。
原因Java的失败是在/ usr / local / bin目录不在你的PATH。
显然,这是你在终端运行bash shell中的路径上。 而任何新的bash的外壳可能你在终端启动(或通过SSH或其他)。 这可能是因为你有一个像线export PATH=$PATH:/usr/local/bin
的地方在〜/ .profile中,在〜/ .bash_profile,〜/ .bashrc中,或在/ etc等价物。
在Linux上,你的所有的GUI的东西是一个登录shell的孩子,所以把东西在这些文件中的一个(只要你选择一个正确的)意味着Java将最终继承该PATH不管它如何被启动。 但在Mac上,你的所有的GUI东西的launchd的孩子,你运行任何外壳只是你的GUI应用的兄弟,不是父。 因此,在bash的启动设置PATH不会影响一些从Finder或IDE或任何发射。
一旦你理解这个问题,你可以了解所有的不同的解决方案,您可以设置默认环境的launchd给用户进程 ,或做同样的事情全系统,或修改/ etc /路径,等等。
它看起来像wget
是OSX系统上未安装。 (,这不是对矿井要么尽管是几代老。)无论是安装或找到另一种方式来下载一个图片; Java并有HTTP支持内置原生后的所有(见java.net.URL
类)。
如果你得到这个错误一次,执行这样的命令:
它的wget
Runtime.getRuntime().exec(new String[]{ "/bin/sh" , "-c" ,"/usr/local/bin/wget http://insitu.fruitfly.org/insitu_image_storage/img_dir_38/insitu38795.jpe" })