Commons exec提供了一个PumpStreamHandler,它将标准输出重定向到Java进程的标准输出.如何将命令的输出捕获到String中?
是否可以在运行时从Java应用程序设置环境变量?在Java 1.5 java.lang.System类中有getenv()方法,我只需要一个setenv()方法......
是否可以在java进程本身中修改环境变量; 不在孩子的过程中.
是否有可能通过JNI实现它?那会怎么样?
谢谢.
编辑:好的,让我这样说吧 - 我们可以用Java做以下几点.请回答.
Hemal Pandya回答说:"您可以修改当前和子进程的环境,但不能修改产生此进程的父进程的环境." 你同意吗?
我试图从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 运行 shell 命令
我想导出一些变量,所以我有这个命令。
Runtime.getRuntime().exec("export a=b");
Run Code Online (Sandbox Code Playgroud)
这个命令有什么问题,因为它抛出异常:
java.io.IOException:无法运行程序“导出”:java.io.IOException:错误= 2,没有这样的文件或目录
我有一个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) 我想在Mac OS X上运行批处理文件(类似于Windows)来运行jar文件,搜索后我发现它运行批处理脚本.
我没有得到正确的链接,我可以从哪里获得帮助.我该如何创建呢?
我有一个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代码发送Unix命令的库.我已经尝试过Expect4J和Gaynmed,但是找不到好的文档.我的要求包括:
任何指针将不胜感激.
我需要从我的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文件?
无需创建我可以注入的另一个类。是否可以模拟javax.mail.Transport
以便我可以Transport.send()
在 Java EE 7 上对该方法进行一些模拟测试?
我几乎已经死了试图解决这个问题.有人能帮帮忙吗?拜托?
以下是代码:
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) 下面是一个在 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 ×12
shell ×3
bash ×2
7zip ×1
batch-file ×1
compression ×1
exec ×1
jakarta-mail ×1
java-ee-7 ×1
macos ×1
progress-4gl ×1
synchronous ×1
unix ×1
zip ×1