相关疑难解决方法(0)

如何使用Commons Exec将命令的输出捕获为String?

Commons exec提供了一个PumpStreamHandler,它将标准输出重定向到Java进程的标准输出.如何将命令的输出捕获到String中?

java

49
推荐指数
1
解决办法
2万
查看次数

是否可以在运行时从Java设置环境变量?

是否可以在运行时从Java应用程序设置环境变量?在Java 1.5 java.lang.System类中有getenv()方法,我只需要一个setenv()方法......

是否可以在java进程本身中修改环境变量; 不在孩子的过程中.

是否有可能通过JNI实现它?那会怎么样?

谢谢.

编辑:好的,让我这样说吧 - 我们可以用Java做以下几点.请回答.

  1. 我们可以修改当前流程的环境吗?
  2. 我们可以修改父进程的环境吗?
  3. 我们可以修改子进程的环境吗?

Hemal Pandya回答说:"您可以修改当前和子进程的环境,但不能修改产生此进程的父进程的环境." 你同意吗?

java environment-variables

42
推荐指数
5
解决办法
6万
查看次数

从Java Synchronously运行shell脚本

我试图从Java执行Bash Shell脚本,并使用这段代码运行良好.

public void executeScript() {
    try {
        new ProcessBuilder("myscript.sh").start();
        System.out.println("Script executed successfully");
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码异步运行.但我想要实现的是同步执行代码.我希望Java进程等到脚本执行完成后再执行下一批代码.

总而言之,我希望在批处理文件("myscript.sh")完成执行执行"打印语句 - 成功执行脚本" .

谢谢

java bash shell synchronous

9
推荐指数
1
解决办法
3万
查看次数

可以从java运行导出命令吗?

可能的重复:
从 java 运行 shell 命令

我想导出一些变量,所以我有这个命令。

Runtime.getRuntime().exec("export a=b");
Run Code Online (Sandbox Code Playgroud)

这个命令有什么问题,因为它抛出异常:

java.io.IOException:无法运行程序“导出”:java.io.IOException:错误= 2,没有这样的文件或目录

java

7
推荐指数
1
解决办法
1万
查看次数

Java 7zip压缩太大了

我有一个Java程序,它搜索具有昨天日期的文件夹并将其压缩为7zip文件并在最后删除它.现在我注意到我的程序生成的7zip存档文件太大了.当我使用像7-Zip文件管理器这样的程序来压缩我的文件时,它会生成一个大小为5 kb的存档,而我的程序会为相同的文件(大小为873 kb)生成一个737 kb的存档.现在我担心我的程序不会将其压缩为7zip文件,而是执行常用的zip文件.有没有办法在我的代码中更改某些内容,以便生成一个像7-Zip文件管理器那样的小型7zip文件?

package SevenZip;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;

import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile;

public class SevenZipUtils {

    public static void main(String[] args) throws InterruptedException, IOException {

        String sourceFolder = "C:/Users/Ferid/Documents/Dates/";
        String outputZipFile = "/Users/Ferid/Documents/Dates";
        int sleepTime = 0;
        compress(sleepTime, outputZipFile, sourceFolder);
    }

    public static boolean deleteDirectory(File directory, int sleepTime) throws InterruptedException {
        if (directory.exists()) {
            File[] files = directory.listFiles();
            if (null != files) {
                for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

java compression zip 7zip

7
推荐指数
3
解决办法
560
查看次数

在Mac OS X上运行.jar文件的脚本

我想在Mac OS X上运行批处理文件(类似于Windows)来运行jar文件,搜索后我发现它运行批处理脚本.

我没有得到正确的链接,我可以从哪里获得帮助.我该如何创建呢?

java macos batch-file

6
推荐指数
1
解决办法
4万
查看次数

从外部目录运行Shell脚本:没有此类文件或目录

我有一个shell脚本文件,我想从java运行.我的java工作空间目录与脚本的目录不同.

private final String scriptPath = "/home/kemallin/Desktop/";

public void cleanCSVScript() {

    String script = "clean.sh";
    try {
        Process awk = new ProcessBuilder(scriptPath + script).start();
        awk.waitFor();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

java.io.IOException: Cannot run program "cat /home/kemallin/Desktop/capture-03.csv | awk -F ',' '{ print $1,",", $2,",", $3,",", $4,",", $6}' > clean.csv": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at ShellScript.cleanCSVScript(ShellScript.java:21)
at Main.main(Main.java:15)
Caused by: java.io.IOException: error=2, …
Run Code Online (Sandbox Code Playgroud)

java bash shell

6
推荐指数
1
解决办法
2万
查看次数

从Java运行unix命令的库

我正在寻找可用于从我的Java代码发送Unix命令的库.我已经尝试过Expect4J和Gaynmed,但是找不到好的文档.我的要求包括:

  1. 运行多个命令.
  2. 捕获上一个命令的输出.
  3. 根据最后一个命令的输出执行一些操作/运行不同的命令.

任何指针将不胜感激.

java unix

4
推荐指数
1
解决办法
7827
查看次数

如何从Java运行.sh文件?

我需要从我的Java代码运行.sh文件而不传递任何参数.我已经尝试过了

Runtime.getRuntime().exec("src/lexparser.sh");
Run Code Online (Sandbox Code Playgroud)

ProcessBuilder pb = new ProcessBuilder("src/lexparser.sh");
Process p = pb.start();
Run Code Online (Sandbox Code Playgroud)

上述两种方法都不起作用.有没有其他方法来运行Java的.sh文件?

java shell

4
推荐指数
1
解决办法
3万
查看次数

模拟 javax.mail.Transport

无需创建我可以注入的另一个类。是否可以模拟javax.mail.Transport以便我可以Transport.send()在 Java EE 7 上对该方法进行一些模拟测试?

java jakarta-mail java-ee-7

4
推荐指数
1
解决办法
1万
查看次数

从java代码运行shell脚本

我几乎已经死了试图解决这个问题.有人能帮帮忙吗?拜托?

以下是代码:

import java.io.*;
import java.lang.Runtime;
import java.util.*;

public class WORKBRO {  

    public static void main(String args[])
    {
        try
        {    
            String target = new String("/home/dhirendra.panwar/Desktop/test.sh");
            Runtime rt = Runtime.getRuntime();
            Process proc = rt.exec(target);

        } catch (Throwable t)
        {
            t.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java exec

1
推荐指数
1
解决办法
4万
查看次数

是否可以从java代码调用进度程序(.p文件)

下面是一个在 Symix 数据库中创建记录的 Progress 程序:

create audit.
    assign audit.table_name    = "JavaSample"
       audit.key_id        = "12345"
       audit.field_name    = "<FieldName>"
       audit.audit_dt      = today
       audit.audit_tm      = time
       audit.audit_user_id = "javauser".
Run Code Online (Sandbox Code Playgroud)

我想从java代码中调用这个.p文件。

java progress-4gl

0
推荐指数
1
解决办法
1649
查看次数