在java上执行.exe,需要一些库

时间:2013-05-20 10:02:51

标签: java windows exec

我今天有点问题,我想在我的java程序中使用this tool。但在Windows上,它只能在安装jpeg库后与Cygwin一起使用。

所以我的问题是:如何在我的java程序中运行它,如:

String[] cmd = {"C:\\Users\\Bastien\\Desktop\\jpegoptim\\jpegoptim.exe", "some args"};
    try {
        Runtime rt = Runtime.getRuntime();
        Process pr = rt.exec(cmd);

谢谢你是否存在解决方案。

2 个答案:

答案 0 :(得分:0)

如果你不关心分发/许可的东西 - 找出你的应用依赖的dll并将它们放在你的exe附近。

这是“让它发挥作用”的简便方法。

您有2种一般方法可以确定您的应用依赖的dll:

  1. 运行应用程序,看看它需要什么(窗口应该给你一个缺少dll的消息) - nmot方便最可靠。

  2. 使用this之类的静态分析工具来分析exe依赖关系 - 应该适用于大多数情况。

  3. 请注意,这是一种非常特殊的方法,我建议你不要在生产中做类似的事情。

答案 1 :(得分:0)

到目前为止,最简单的方法是安装Cygwin。

如果你不能(或不会)这样做,你可以尝试一些事情,但两者都不能保证成功:

  1. 您可以下载源代码并尝试使用您喜欢的Windows C或C ++(或其他)编译器为本机窗口构建它。如果失败(可能会失败),您可以尝试 port 代码,用等效的Windows库调用替换特定于UNIX的库。警告:你需要一些C / C ++和Windows编程技巧来解决这个问题。

  2. 您可以尝试识别并提供应用程序运行所需的所有DLL。但是,其中一些DLL将成为Cygwin的一部分,因此您首先需要下载Cygwin以获取它们。

  3. 当心:如果您的目的是重新分发,请在安装程序(或其他)中重新分发Cygwin DLL 可能意味着您的代码需要遵守Cygwin License的条款。这基本上是GPL 3+,但有例外。或者,您可以从RedHat获得(即支付)特殊许可。无论哪种方式,做自己的研究和/或获得有关许可影响的合格建议。