Runtime.getRuntime().exec portability problem
Hello everyone!
I've got a problem with running external application (in my case it's pdfLaTeX). The code looks as follows:
System.out.println(AppConfig.getExeFile() + " " + params); // AppConfig.getExeFile() is a static function that outputs a String object.
Process p = Runtime.getRuntime().exec(AppConfig.getExeFile() + " " + params); // params is a String object as well.
p.waitFor();
// ...On Linux everything works great. System.out.println() outputs the following line:
/opt/texlive/bin/pdflatex -halt-on-error -output-directory /tmp /tmp/tabular.texThe application executes successfully.
However, I can't get my program to run on Windows. In this case, the generated command looks as follows:
"C:\Program Files\LaTeX\MiKTeX 2.7\miktex\bin\pdflatex.exe" -halt-on-error -output-directory C:\DOCUME~1\Roman\USTAWI~1\Temp C:\DOCUME~1\Roman\USTAWI~1\Temp\tabular.texAfter displaying this line, my application freezes. The child process (pdflatex.exe) is frozen as well. Then I kill both processes.
Here's the PdfLaTeX's log file after failure:
{C:/Documents and Settings/All Users/Dane aplikacji/MiKTeX/2.7/pdftex/config/pd
ftex.map}
!pdfTeX error: (file C:/Documents and Settings/All Users/Dane aplikacji/MiKTeX
/2.7/pdftex/config/pdftex.map): fflush() failed
==> Fatal error occurred, no output PDF file produced!and here's how it should look like:
{C:/Documents and Settings/All Users/Dane aplikacji/MiKTeX/2.7/pdftex/config/pd
ftex.map}] (tabular.aux) )
Here is how much of TeX's memory you used:
202 strings out of 95340
2116 string characters out of 1183965
46926 words of memory out of 1500000
3474 multiletter control sequences out of 110000
3640 words of font info for 14 fonts, out of 1200000 for 2000
14 hyphenation exceptions out of 8191
23i,6n,17p,173b,100s stack positions out of 5000i,500n,10000p,200000b,5000s
<C:/Program Files/LaTeX/MiKTeX 2.7/fonts/type1/bluesk
y/cm/cmr10.pfb>
Output written on tabular.pdf (1 page, 10003 bytes).
PDF statistics:
10 PDF objects out of 1000 (max. 8388607)
0 named destinations out of 1000 (max. 131072)
1 words of extra memory for PDF output out of 10000 (max. 10000000)I suspected that the problem was caused by presence of spaces in command (I've tried several other solutions such as putting parameters into String[] array, escaping, adding double-quotes, putting the command to the batch file), but when I run my the same command from the command line, everything works fine.
I believe that I'm making some kind of a stupid mistake because it doesn't look like it's pdfLaTeX's fault.
Thanks in advance for your hints. Solutions are welcome as well ;-)
Hi,
What is probably happening is that the process is being blocked because you are not reading the output.
This is a common problem with exec.
Read this article:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
HTH,
Eugenio Alvarez
Similar Messages
-
hi, i am trying to run a NET USE command through using:
Runtime.getRuntime().exec(Command);
where Command is a valid NET USE command. I know it is valid because i executed this exact command
from the command line and it worked fine. This class works perfectly under Windows, but then i took it to an
OS/2 environment and i am getting this error. Does anybody know what i need to do to modify so it will work
under OS/2? any gotchas? thanksi read that article, and there is a lot to go over. I will start that right now. Anyways, i got the actual stack trace
from this error:
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.<init>(Win32Process.java:67)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:566)
at java.lang.Runtime.exec(Runtime.java:428)
at java.lang.Runtime.exec(Runtime.java:364)
at java.lang.Runtime.exec(Runtime.java:326)
at ReconnectReportServer.run(ReportServer.java:499)
at java.lang.Thread.run(Thread.java:536)
and, once again, i am running this on OS/2. I compiled it on OS/2 as well. Any ideas? thanks! -
Runtime.getRuntime().exec problems
i am trying to run files from my java application, i use the following command
Runtime.getRuntime().exec("cmd /c start " + filePath);but it seems that it cant handle file path with spaces, like
C:\Documents and Settings\Administrator\My Documents\My Web\Untitled-3.fla
it works well with path like this
C:\Downloads\1.rar
am i right? and how to solve this problem? thanksfinal String[] command =
"cmd.exe",
"/C",
"start \"" + filename + "\"",
final Process p = Runtime.getRuntime().exec(command);this method can only trigger files in the same folder as the java application, isnt it? -
Hi,
I am trying to launch an application 4 times with different arguments from a Java app. I have tried doing it sequentially and in four different threads, but the results are the same: sometimes the 4 of them are properly launched, sometimes (the most of the times) only 3 are launched and sometimes only 2. I have tried with cmd and cmdarray[] as parameters for exec but the results are the same.
This is one of the four threads I use:
Runnable r1 = new Runnable(){
public void run(){
String ecgCommand = "./flute -S -m:" + Config.ECGS_FLUTE_IP + " -p:" + Config.ECGS_FLUTE_PORT + " -F:" + Config.ECGS + " -r:" + Config.ECGS_FLUTE_RATE + " -C";
System.out.println(ecgCommand);
InputStream ecgsStream = null;
InputStreamReader isr = null;
BufferedReader br = null;
try{
ecgsProcess = Runtime.getRuntime().exec(ecgCommand, null, new File(Config.HOME_PATH + Config.FLUTE_PATH));
String line;
ecgsStream = ecgsProcess.getInputStream();
isr = new InputStreamReader(ecgsStream);
br = new BufferedReader(isr);
StyledDocument styleDoc = mm.ecgFluteMessages.getStyledDocument();
Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
while((line = br.readLine()) != null && running){
if(styleDoc.getLength() > 25000) mm.ecgFluteMessages.setText("");
styleDoc.insertString(styleDoc.getLength(), line+ "\n", def);
mm.ecgFluteMessages.setCaretPosition(mm.ecgFluteMessages.getDocument().getLength());
System.out.println(ecgsProcess.waitFor());
}catch(Exception e){
try {
br.close();
isr.close();
ecgsStream.close();
} catch (Exception e1) {
e.printStackTrace();
new Thread(r1).start();Adding a Thread.sleep between runnables doesn't have any effect.
In addition, those processes that are not properly launched return an exit value of 255. I have searched for its meaning but I have found nothing. Could anybody tell me where can I find a list of the JVM exit codes in order to guess what is happening?
Can anybody help me with this issue? Help is much appreciated.
Thanks a lotI have been looking for it but it seems it has not any exit code list or any documentation regarding this. Anyway, I think 255 is a JVM error code (the last one, errors are numbered in modulo 256) which means that the error has nothing to do with JVM but with the application execution (flute in my case).
I have added a prompt for the errorStream and I have this message for the 255 exited programs:
not well-formed (invalid token) at line 15+
And the four commands are like this:
*./flute -S -m:239.255.255.253 -p:60102 -F:./ecgs -r:150 -C*
*./flute -S -m:239.255.255.252 -p:60103 -F:./ads -r:150 -C*
*./flute -S -m:239.255.255.251 -p:60104 -F:./pushvod -r:50 -C*
*./flute -S -m:239.255.255.250 -p:60105 -F:./banners -r:150 -C*
So, as the process is sometimes initialized properly and others it is not, it seems that there is a problem with the tokenizing of the command not happening always. As I have tried it with a single command line and with an array of command strings (the first for "./flute" and the followings for each argument) with the same results I can't understand why is this problem happening sometimes. Happening always would help me in giving a clue but that's not the case.
Any idea? Thanks a lot.
Edited by: dulceangustia on Apr 3, 2008 3:41 AM -
Hi all,
I've trying to get the current mozilla version in Java side using
Runtime.getRuntime().exec(). The sample code is as below.
I've tested two cases using exec(), as case# 1 and case# 2.
The result is after the code.
try
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(new String[] {"mozilla", "-remote"}); //case# 1
//Process proc = rt.exec(new String[] {"mozilla", "-version"}); //case# 2
InputStream stderr = proc.getErrorStream();
InputStreamReader isr = new InputStreamReader(stderr);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<ERROR>");
while ( (line = br.readLine()) != null)
System.out.println(line);
System.out.println("</ERROR>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
} catch (Throwable t) {
t.printStackTrace();
// execute "mozilla -remote"(case# 1)
$ java TestExec
<ERROR>
-remote requires an argument
</ERROR>
Process exitValue: 1
// execute "mozilla -version"(case# 2)
$ java TestExec
<ERROR>
</ERROR>
Process exitValue: 0
I'm just surprised that why case# 2 couldn't get the returned version string as case #1 ? Since there will be version string be returned from command line:
$ mozilla -version
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020830, build 2002083014
Could anybody explain the problem or give any solution ?
Thanks.
-George.Hi all,
One more question here.
While I use Runtime.getRuntime().exec() to execute some commands,
the commands may fail for some reason. Generally, they will return with the exit
value set to 1 or others. But sometime, before waitFor() exits, there is a popped up
dialog giving some info, and only after I click the "OK" button, it dispears, and
waitFor() returns the exit value.
So I'm not sure that could I suppress this popped up dialog, and make it run
just like other commands ? I mean, just get the exit value by waitFor() without user
interferance ?
Thanks.
-George. -
Runtime.getRuntime().exec problems running with applet
Hi,
I am running the command
Process prc = Runtime.getRuntime().exec("net config workstation");
InputStream in = prc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
line = br.readLine();
When running from an application(/stand alone program) on Win-NT it runs fine. But when i include the same code in an Applet and try to run.
It doesnt return any thing. I see the DOS-prompt open and close and i can also see the required output generated on the DOS prompt, but the program doesnt return any results(null) in the InputStream.
I even tried to get the ErrorStream incase it is writing some error but it doesnt write anything.
I tried running some other commands like (cmd.exe /c set) which were able to run on both application as well as from the applet.
I have tried giving the "net config workstation" command in all flavors
String[] cmd = new String[3];
cmd[0] = "cmd.exe";
cmd[1] = "/C";
cmd[2] = "net config workstation";
And
String[] cmd = new String[3];
cmd[0] = "net.exe";
cmd[1] = "config";
cmd[2] = "workstation";
AND
String[] cmd = new String[5];
cmd[0] = "cmd.exe";
cmd[1] = "/C";
cmd[2] = "net.exe";
cmd[3] = "config";
cmd[4] = "workstation";
AND giing the full path as
C:\winnt\system32\net.exe config workstation
But still it doesnt work.
Can anybody please suggest what is the problem.Its Urgent.....
Well the purpose of this is to get users system properties like the Logon Domain , server name etc.... or else can anybody suggest a better way to obtain this information.....
Your reply will be highly appriciated...
Thanks in Advance......Thanks for atleast replying.....
Sorry, i forgot to mention.... yes OfCourse, i am using an Signed Applet..... That how i was able to run the "set" command.....
I have made sure it is not sucha simple problem..... the thing is as i have mentioned i know that even "net config workstation" works..... cause i see the output on the DOS prompt,.... but this output is not returned to the Applet in the getInputStream()/getErrorStream().....
Can anybody please suggest a way to get this output..... OR is there some other way to get the machine's domain, server name etc info from the machine....?????
Thanks in Advance...!! -
Problem with Runtime.getRuntime().exec
Hi ,
i'm using jBuilderX and windows 2000 server . My problem is that i can't
find why
in my code it doesn't work this:
import java.lang.*;
String command = new String("c:\\testd\\testf.bat"); // testf.bat -
batch file
Runtime.getRuntime().exec(command); // it doesn't
have any effect
Thanks in advance,What's it supposed to do?
I can definitely help you on this 1, but I'd really like to see your streamoutputs. You can get these from the Process object that is created, but you'll need to add some threaded listeners to get the data.
Is this possible? -
Problem in Runtime.getRuntime().exec
Hi,
I am trying to start the tomcat server through a java application.Before starting the server,i need to run a batch file for setting up some classpaths.I am able to run the batch file and start the server,but its opening the 2 windows.How do i suppress it?
One more problem is how do i stop the server?
Code is:
import java.io.*;
public class Test
public static void main(String args[]) {
try {
Process p = Runtime.getRuntime().exec("cmd /c start C:\\soap.bat");
p.destroy();
Process p1 = Runtime.getRuntime().exec("cmd /c start C:\\jakarta-tomcat-3.2.1\\bin\\startup");
//p.waitFor();
Thread.sleep(10000);
p1.destroy();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
bw.write("1");
bw.flush();
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
br.close();
bw.close();
System.out.println(p.exitValue());
catch(Exception e) {
System.out.println(e);
I need the help as early as possible.
pls cc reply to:[email protected]
Thanks
AnithaSoln. to your first prob:
1) To have the other DOS window closed, click on the extreme left-top corner of that window. In the menu that drops down ,select properties.In the properties window make sure the 'close on Exit' check Box is checked. Apply the changes.
2) To stop the server u need to call the shutdown.bat file in the tomcat\bin dir. If u want to do this thru java then call the shutdown.bat file from your Runtime.exec() method. Same as u did for the startup file
Hope this helps. -
Hi all,
I was trying to execute the following code:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
* Created on Mar 13, 2007
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
* @author 195092
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
public class ClassReportDeleteDaemon {
ClassReportDeleteDaemon()
public static void main(String[] args) throws Exception
Connection conn = null;
Statement stmt = null;
ResultSet rs;
String strQuery = null;
String strdaysback = null;
String delstring = null;
int daysback;
try
System.out.println("REPORT DELETION ::: FINDING DRIVER");
Class.forName("oracle.jdbc.driver.OracleDriver");
catch(Exception e)
System.out.println("REPORT DELETION ::: DRIVER EXCEPTION--" + e.getMessage());
System.out.println("REPORT DELETION ::: DRIVER NOT FOUND");
try
String strUrl = "jdbc:Oracle:thin:" + args[0] + "/" + args[1] + "@" + args[2];
System.out.println("REPORT DELETION ::: TRYING FOR JDBC CONNECTION");
conn = DriverManager.getConnection(strUrl);
System.out.println("REPORT DELETION ::: SUCCESSFUL CONNECTION");
while(true)
System.out.println("WHILE LOOP");
stmt = conn.createStatement();
strQuery = "SELECT REP_DAYS_OLD FROM T_REPORT_DEL";
rs = stmt.executeQuery(strQuery);
while(rs.next())
strdaysback = rs.getString("REP_DAYS_OLD");
//daysback = Integer.parseInt(strdaysback);
System.out.print("NO of Days===>" + strdaysback);
delstring = "find /tmp/reports1 -name " + "\"" + "*" + "\"" + " -mtime +" + strdaysback + " -print|xargs rm -r";
System.out.println("DELETE STRING===>" + delstring);
Process proc = Runtime.getRuntime().exec(delstring);
//Get error stream to display error messages encountered during execution of command
InputStream errStream=proc.getErrorStream();
//Get error stream to display output messages encountered during execution of command
InputStream inStream = proc.getInputStream();
InputStreamReader strReader = new InputStreamReader(errStream);
BufferedReader br = new BufferedReader(strReader);
String strLine = null;
while((strLine=br.readLine())!=null)
System.out.println(strLine);
} //end of while loop
} //end of try
catch (Exception e)
System.out.println("REPORT DELETION ::: EXCEPTION---" + e.getMessage());
conn.close();
} //end of main
} //end of ClassReportDeleteDaemon
But it is giving the error "BAD OPTION -print|xargs". The command run well in shell.
Please help.
Thanking u.......Since the pipe '|' is interpreted by the shell then you need the shell to invoke your command
String[] command = {"sh","-c","find /tmp/reports1 -name " + "\"" + "*" + "\"" + " -mtime +" + strdaysback + " -print|xargs rm -r"};
final Process process = Runtime.getRuntime().exec(command);
You should also read http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html at least twice and implement the recommendation regarding stdout and stderr.
P.S. Why are you not using Java to find and delete these files?
Message was edited by:
sabre150 -
Problems with Runtime.getRuntime().exec in Windows 2000
Hello,
I have a batch file that I want to run from my java application. My code is the following:
try {
Runtime.getRuntime().exec("cmd.exe /c C:\\temp\\shortcut.bat");
} catch (Exception e) {
System.out.println(e.getMessage());
}I was developing on windows XP and it worked just fine. But then I tested it on windows 2000 and it didn't work. The batch file is okay, because if I run the batch file myself it works just fine, even from the command line. I get no errors what so ever, it just doesn't do anything...
Can somebody help me with this?
thx in advancethank you all so much
I figured it out... It was a combination of two things that went wrong.
First one: in my batch file I had:
cd C:\tempwhich worsk fine in XP, but in it doesn't in 2000. In 2000 it has to be:
C:
cd \temp But just changing that wasn't enough, I also needed the "start"
Now it works just fine on 2000, hopefully it'll still work on xp as well.
THX! -
Problems running Runtime.getRuntime().exec(path)
I am trying to run the following command, so that i can execute a file on DOS
Runtime.getRuntime().exec(path);
where
path = cmd /c C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Temp\muexec2562.bat
(btw i think /c is german notoation used for -c). all i get is the DOS screen briefly popping up on screen and then disappearing. The .bat files contains commands to copy files.
ThanksReplace your path with
path = C:\Dokumente und Einstellungen\Administrator\Lokale Einstellungen\Temp\muexec2562.bat -
Runtime.getRuntime().exec problem with linux script.
Hello,
I try to start a script under Linux RedHat 9. This script must just create another file.
I work with JDK 1.4.1_02b06.
If I use the next command
process = Runtime.getRuntime().exec("/temp/myScript.sh");
This is not working. I script file is existing otherwise I receive an error. I don't understand why the script is not executed!
I have check some other posts in this forum but I cannot find the solution.
Thanks in advance for your help.
Alain.Try running it with sh: Runtime.getRuntime().exec("sh /temp/myScript.sh");
-
I am currently doing a project which requires the execution of Solaris applications through the use of Java Servlet with this Runtime method - Runtime.getRuntime.exec()
This means that if the client PC tries to access the servlet in the server PC, an application is supposed to be executed and launched on the server PC itself. Actually, the servlet part is not an issue as the main problem is the executing of applications in different platforms which is a big headache.
When I tried running this program on a Windows 2000 machine, it works perfectly fine. However, when I tried it on a Solaris machine, nothing happens. And I mean nothing... no errors, no nothing. I really don't know what's wrong.
Here's the code.
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Process process; Runtime runtime = Runtime.getRuntime();
String com= "sh /opt/home/acrobat/";
String program = request.getParameter("program");
try
process = runtime.exec(com);
catch (Exception e)
out.println(e);
It works under Windows when com = "c:\winnt\system32\notepad.exe"
When under Solaris, I have tried everything possible. For example, the launching of the application acrobat.
com = "/opt/home/acrobat"
com = "sh /opt/home/acrobat"I have also tried reading in the process and then printing it out. It doesn't work either. It only works when excuting commands like 'ls'
BufferedReader read = new BufferedReader(new InputStreamReader(process.getInputStream()));Why is it such a breeze to execute prgrams under Windows while there are so many problems under Solaris.
Can some experts please please PLEASE point out the errors and give me some advice and help to make this program work under Solaris! Please... I really need to do this!!
My email address - [email protected]
I appreciate it.
By the way, I'm coding and compiling in a Windows 2000 machine before ftp'ing the .class file to the Solaris server machine to run.it is possible that you are trying to run a program that is going to display a window on an X server, but you have not specified a display. You specifiy a display by setting the DISPLAY environment variable eg.
setenv DISPLAY 10.0.0.1:0
To check that runtime.exec is working you should try to run a program that does not reqire access to an X Server. Try something like
cmd = "sh -c 'ls -l > ~/testlist.lst'";
alternatively try this
cmd = "sh -c 'export DISPLAY=127.0.0.1:0;xterm '"
you will also need to permit access to the X server using the xhost + command -
Strange behaviour of Runtime.getRuntime().exec(command)
hello guys,
i wrote a program which executes some commands in commandline (actually tried multiple stuff.)
what did i try?
open "cmd.exe" manually (administrator)
type "echo %PROCESSOR_ARCHITECTURE%" and hit enter, which returns me
"AMD64"
type "java -version" and hit enter, which returns me:
"java version "1.6.0_10-beta"
Java(TM) SE Runtime Environment (build 1.6.0_10-beta-b25)
Java HotSpot(TM) 64-Bit Server VM (build 11.0-b12, mixed mode)"
type "reg query "HKLM\SOFTWARE\7-zip"" returns me:
HKEY_LOCAL_MACHINE\SOFTWARE\7-zip
Path REG_SZ C:\Program Files\7-Zip\
i wrote two functions to execute an command
1) simply calls exec and reads errin and stdout from the process started:
public static String execute(String command) {
String result = "";
try {
// Execute a command
Process child = Runtime.getRuntime().exec(command);
// Read from an input stream
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
result += ((char) c);
in.close();
in = child.getErrorStream();
while ((c = in.read()) != -1) {
result += ((char) c);
in.close();
} catch (IOException e) {
return result;
}the second function allows me to send multiple commands to the cmd
public static String exec(String[] commands) {
String line;
String result = "";
OutputStream stdin = null;
InputStream stderr = null;
InputStream stdout = null;
// launch EXE and grab stdin/stdout and stderr
try {
Process process;
process = Runtime.getRuntime().exec("cmd.exe");
stdin = process.getOutputStream();
stderr = process.getErrorStream();
stdout = process.getInputStream();
// "write" the parms into stdin
for (int i = 0; i < commands.length; i++) {
line = commands[i] + "\n";
stdin.write(line.getBytes());
stdin.flush();
stdin.close();
// clean up if any output in stdout
BufferedReader brCleanUp = new BufferedReader(
new InputStreamReader(stdout));
while ((line = brCleanUp.readLine()) != null) {
result += line + "\n";
brCleanUp.close();
// clean up if any output in stderr
brCleanUp = new BufferedReader(new InputStreamReader(stderr));
while ((line = brCleanUp.readLine()) != null) {
result += "ERR: " + line + "\n";
brCleanUp.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return result;
}so i try to execute the commands from above (yes, i am using \\ and \" in java)
(1) "echo %PROCESSOR_ARCHITECTURE%"
(2) "java -version"
(3) "reg query "HKLM\SOFTWARE\7-zip""
the first function returns me (note that ALL results are different from the stuff above!):
(1) "" <-- empty ?!
(2) java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
(3) ERROR: The system was unable to find the specified registry key or value.
the second function returns me:
(1) x86 <-- huh? i have AMD64
(2) java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
(3) ERROR: The system was unable to find the specified registry key or value.
horray! in this version the java version is correct! processor architecture is not empty but totally incorrect and the reg query is still err.
any help is wellcome
note: i only put stuff here, which returns me strange behaviour, most things are working correct with my functions (using the Runtime.getRuntime().exec(command); code)
note2: "reg query "HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0" /t REG_SZ" IS working, so why are "some" queries result in ERR, while they are working if typed by hand in cmd.exe?ok, i exported a jar file and execute it from cmd:
java -jar myjar.jar
now the output is:
(1) "" if called by version 1, possible to retrieve by version 2 (no clue why!)
(2) "java version "1.6.0_10-beta"
Java(TM) SE Runtime Environment (build 1.6.0_10-beta-b25)
Java HotSpot(TM) 64-Bit Server VM (build 11.0-b12, mixed mode)"
(3) C:\Program Files\7-Zip\
so all three problems are gone! (but its a hard way, as i need both functions and parse a lot of text... :/ )
thanks for the tip, that eclipse changes variables (i really did not knew this one...) -
Runtime.getRuntime.exec() not working when Tomcat is made a windows Sevice
Hi,
I am working on a web application which launches a exe file on subitting the form. I am using Apache Tomcat 4.0.6 to run the web application. Initially Tomcat was not made a windows service on my machine and when I launch an exe it is launching without any problems. I used the following command to launch the exe file:
<code>
Process p = Runtime.getRuntime().exec("C:\\Program Files\\Mercury Interactive\\WinRunner\\arch\\wrun.exe" + strWROptions);
</code>
The above command launches WinRunner on the local machine.
without using tomcat if I just compile and run a test program with this command, the exe is launching perfectly. But, Once I made tomcat a windows service on my machine the exe is not launching.
Also, a process is being created in the windows task bar named wrun.exe once I submit the form but WinRunner is not lauching on the desktop.
Can any one please help and suggest me.
Thanks,
RameshThe version of Java I am using is 1.4.2. Even without
using the string array as you mentioned, the exe
(wrun.exe) is launched on my desktop if I don't run
Tomcat as a windows service. But the problem arises on
making it a service :-(
That is strange because going by the documentation what you have been using should never work. I can't test it though, I'm not on MSWindows at the moment..
Now, when I use this string array convention, I am
getting an error saying "The tool could not launch..
some error occured".
That's not a Java error message, it must come from WinRunner. This means that you have succesfully started WinRunner (great!) but something else is wrong; maybe the parameters you pass to it are incorrect.
How would you run it on the command line? Like this?wrun -t "D:\L5_QE\L5A\Initial" -create_text_report on -runThat line executes the wrun program and passes it five parameters, not three. The first parameter is "-t", the second "D:\L5_QE\L5A\Initial", the third "-create_text_report", the fourth "on", and the fifth "-run". The array of strings that corresponds to that line isString[] command = {"C:\\Program Files\\Mercury Interactive\\WinRunner\\arch\\wrun.exe",
"-t", "D:\\L5_QE\\L5A\\Initial",
"-create_text_report", "on",
"-run"};
Maybe you are looking for
-
The subnet mask on the Extreme isn't the same as on the Express.
Dear Group, I have my Extreme configured to do PPPoE and DHCP and my DSL modem is setup as bridged. Everything is finally working well. I have an Express extending the Extreme in a WDS. When I look at the PPPoE tab in the Internet tab of the Extreme
-
Confirmation of process order create : goods movement
Dear Sir/Madam , I am using the Transaction Code - CORK for confirmation of process order , but promblem is that when i am saving the goods for confirmation then material pi101 has some error i.e the material pi101 is locked by another user
-
I am using report generation toolkit 1.1 with Labview 7.0 and Office 2003 professional. The create new report VI opens Excel but throws error (-2147167262- from automation open VI) when I try to open MS word. please help...
-
Time Machine Permissions Issue "fetching" Please help!
Hello, I did a fresh install of Mavericks and have accessed my time machine many times since then. Tonight I tried to access it as usual, but all of a sudden I cannot access any files. It says I don't have permission...nothing has changed!? "The f
-
PO Change history for Condition types
Hi All, I need to develop a PO ammendment report, where my client wants to capture all changes in the PO. I have checked and found that for fields like pricing/ tax conditions and texts SAP does not keep any track of change. Say for example my freigh