Runtime.exec() does not work normally
I try to wrapper the oracle connect command on unix using this function:
runtime.exec("sqlplus username/password@dbinstance")
it is ok on windows, but on unix, after runing the class, I get nothing. what is the problem?
Please help me. thanks
There are several traps with runtime.exec(). The most important one is that you should read
the output stream of the launched program. Otherwise it will stop running when the console buffer overflows. The size of the buffer differs for various OSes.
Look at this article:
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
It it does not answer your problem, try to search the forums:
http://search.java.sun.com/Search/java?qt=%2B%22exec%22+-%22Replies%3A+0%22&col=javafrm&rf=0&qp=%2Bforum%3A31
This problem has been asked hundreds of times.
Hope, this helps.
Similar Messages
-
Runtime.exec does not work for commands with lengthy outputs
I need to use Runtime.exec to run some custom commands on a Unix box. I have been doing this for quite some time now and had begun to feel comfortable when recently I started facing a problem. The thing is, whenever there is a command which prints a lot of data on to the console, the program is not able to exit from the waitFor method. Is there some thing that can be done about this?
Following is a part of the code I use:
Runtime rt = Runtime.getRuntime();
Process p = rt.exec (command);
System.out.println ("Got the process");
int exitValue = p.waitFor();
System.out.println ("Exit value: " + exitValue);When the output of the "command" is lengthy, it hangs after printing "Got the process".
PS: By lengthy output, I mean that the command results in printing lines to the console which might be more than 100 in number. Say, something like what "ls -R /" would do in Unix / Linux.From java.lang.Process API doc:
The Runtime.exec methods may not work well for special processes on certain native platforms, such as native windowing processes, daemon processes, Win16/DOS processes on Microsoft Windows, or shell scripts. The created subprocess does not have its own terminal or console. All its standard io (i.e. stdin, stdout, stderr) operations will be redirected to the parent process through three streams (Process.getOutputStream(), Process.getInputStream(), Process.getErrorStream()). The parent process uses these streams to feed input to and get output from the subprocess. Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.
So you need to consume the process' output. Check the StreamGobbler example from this article.
Hope it helps. -
Runtime.exec() does not work under Linux
Hi,
I have a generic application runner class that runs an external
program and redirects stdout/stderr to a buffer/file.
While everythings works just fine under Windows, I get the
following exception under Linux trying to run the Java interpreter
'java':
java.io.IOException: "/usr/lib/SunJava2-1.3.1/jre/bin/java": not found
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:139)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:546)
at java.lang.Runtime.exec(Runtime.java:413)
I have checked that the file /usr/lib/SunJava2-1.3.1/jre/bin/java
exists.
Any help appreciated!
Marccan I ask how you solved it? I am having a problem
with quotes just now to and it might help me!I simply tested what the current platform is and
only used quotes under Windows.
Marc -
Runtime.exec() does not work?
I'm trying to invoke a C++ executable from java using the Runtime.exec() method. The C++ application accepts a filename as a command line argument & opens the file. This C++ app is unicode enabled i.e. it can accept UTF-16 (wide char) parameters. Howevere, when i invoke this application using Java's Runtime.exec() and specify a japanese file name as an argument, the japanese characters get converted to '?' characters by the time they are received in the C++ application. I'm running this application on Windows 2K, default i.e. English version.
Looking at the source code of Runtime class, it seems that the exec()
function makes use of a native helper function - execInternal(). Does
this function support the entire unicode range?
Is there any way we can avoid the conversion of japanese characters to '?' characters? Also, is there any other alternative for invoking an external application with Unicode (Say, japanese) arguments?
Please reply ASAP.
Thanks!>
I'm trying to invoke a C++ executable from java using
the Runtime.exec() method. The C++ application accepts
a filename as a command line argument & opens the
file. This C++ app is unicode enabled i.e. it can
accept UTF-16 (wide char) parameters. Howevere, when i
invoke this application using Java's Runtime.exec()
and specify a japanese file name as an argument, the
japanese characters get converted to '?' characters by
the time they are received in the C++ application. I'm
running this application on Windows 2K, default i.e.
English version.
Looking at the source code of Runtime class, it seems
that the exec()
function makes use of a native helper function -
execInternal(). Does
this function support the entire unicode range?I don't know because I've never tested this case specifically.
You didn't show your code though. How are you reading in the String? You mentioned that you passed a Japanese character String as a filename argument. I also read that you are running on an English Win2K platform. How did you read that argument in? It may just be that you read the argument in your default encoding(English) and you needed to specify an alternate one. -
Runtime.getRuntime().exec() does not work after JRE upgradation
I have upgraded JRE from 1.3.0_02 to 1.3.1_15. After this upgrade, Runtime.getRuntime().exec() has suddenly stopped working. If I downgrade to 1.3.0_02, it starts working again.
Please help.It has definitely forked, and this is the child process. It says so. If it was the parent process it would just show Java code related to launching processes. That does not involve PKCS11. After the fork there are two identical processes with the same stack: the child process of the fork goes on to replace itself with the target command via Unix exec(), which it doesn't look like it is succeeding at. The parent process doesn't do much at all, probably just housekeeping and then a Unix wait() for Process.waitFor() to hook into.
-
Runtime.exec does not execute my program, but executes "ls"
I am trying to run an exe from a Java program.
The program that I want to run is an output of a gcc -o ICDDATA ICDdata.c
Now when I use the Runtime.exec() and execute "ls", "cat" it is working fine without any errors.
But when i try to give the file(ICDDATA) that was created with the gcc, it generates an error code of "11" or "10" and exits the process.
Could anyone please let me know the reason why this is happenig and suggest and appropiate solution for this.When I give ICDDATA at the prompt, it is executing perfectly fine.
But only when it is run inside the Java program its giving the error code 10.
Here is the source code:
======================================
public class InvokeInterface {
This method takes two parameters and accordingly invokes one of the
interface (ICD / Value).
@Input : String, String
@Return : void
static void executeInterface(String processName, String debugOption)
throws java.io.IOException {
String commandToExecute=". / ";
// The command that has to be passed to the Shell.
if(processName.equals("ICD"))
commandToExecute="ICDDataRefresh";
if(processName.equals("VALUE"))
commandToExecute="ValueDataRefersh";
commandToExecute += " "+debugOption;
System.out.println("..."+commandToExecute);
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(commandToExecute);
try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " +
proc.exitValue());
catch (InterruptedException e) {
System.err.println(e);
==========
Thanks in Advance
Ram -
Runtim exec() method not working.....giving Exception
whts the code to use exec() method. i m using it as follows and also catching exception.
Runtime r=Runtime.getRuntime();
Process p=r.exec("java A");
code is giving IOException at runtime with error=2.Here is an example I used when I first needed to test the runtime.exec
import java.util.*;
import java.lang.*;
import java.io.*;
public class TestRuntime {
public static void main(String args[])
try
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("java A");
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();
}Are you waiting for the process to end before exiting your program? -
Problem Description:
korean character crash when using ExternalInterface.call(funcName, args)
funcName : alpha-numeric
args : include korean characters
Steps to Reproduce:
<flex source>
private function handleRequest(val):void {
ExternalInterface.call("processRequest", "가나다라");
<javascript source>
function processRequest(param) {
alert(param); //does not display korean characters
Actual Result:
媛€?섎떎??
Expected Result:
가나다라
Any Workarounds:
Nothing !!
OS : Windows7 Pro 64bit(korean)
Flex Builder : 3.0
Flash Player : 11.8.800.168 ActiveX
Browser : IE10
WAS : WebLogic 8.1, 12g, Tomcat 5,6,7
Chrome : 29.0.1547.66 m <== Good
FireFox : 23.0.1 <== GoodSame problem here! With the exact same version.
Problems on IE.
Chrome and FF OK -
Bpelx:exec does not work?
Hi,
I an trying to set the Instance title via Java but what ever I do I get this error:
[2007/03/25 16:59:08] "XMLDOMException" has been thrown.less
ugyldigt navneområde for præfikset xmlns
My Java code looks like this:
<bpelx:exec name="Java_Embedding_1" language="java" version="1.4">
<![CDATA[String title = "qwerty";
setTitle(getTitle() + title);]]>
</bpelx:exec>Anybody got an idea what is going wrong?
Regards PetePeter,
Did you apply all the the patches :-) (80+), I had this issue months ago and I can remember that it had to do with the DOM level 1 vs. level2 issue. It was solved by applying this patch. Look at my blog, http://orasoa.blogspot.com, fo a list of patches that I normally use, including this patch.
Marc -
Runtime bones does not work if imported by Flash (example included)
Created a runtime bone animation (more complicated than the one included in this example). When I loaded the swf using the Loader class in master application, the runtime animation stopped working. The authortime bones still work.
I included my source files for the bones, and another fla that only calls the Document class Main.as. Try running bonesRuntime.html, and the runtime bones work; call bonesSwfLoader.html and only the authortime bones work.
Is this a bug or a programming error?I found the solution at http://www.mad.com.au/blog/?p=208
I quote: (Paul Burnett)
Tip – loading a swf with a Bones Armature (IK) into another swf
A few people have asked me how to load a swf file that contains an armature, into another swf file. If you just try to do it the armature doesn’t work. The trick is that you need to register the armature in the loader file. I have attached a couple of very simple files to demonstrate. The bones.swf contains a simple armiture set to ‘Runtime’. The ‘loader.swf’ loads the bones.swf and registers the armature. For more info check out the new IK class in Flash CS4.
import fl.ik.*;
import flash.display.*;
//load the bones swf
var request:URLRequest = new URLRequest("bones.swf");
var loader:Loader = new Loader();
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, init);
//set up the vars
var boneClip:Sprite;
var myArmature:IKArmature;
function init(e:Event):void{
//add the clip to the stage
boneClip = Sprite(loader.content);
addChild(boneClip);
//set up IK
IKManager.setStage(stage);
myArmature = IKManager.getArmatureAt(0);
myArmature.registerElements(stage);
IKManager.trackAllArmatures(true); -
Hi, I have a MAC (version 10.10.2) and installed Creative Suite one year ago. Now I want to open the Illustrator, but it does not work. It says I should install old Java SE 6-Runtime-Version to open „Adobe Illustrator CS6“. Where can I find it? Thanks for your answer! Jana
Prompted to install Java SE 6 Runtime | Mac OS 10.9
Mylenium -
When trying to PDF a webpage into a PDF, it does not work, I go through all the steps as normal, and It does nothing. I can repeat my action, where instead of "printing" to adobe, it saves the file, which it doesn't save it at all. I can't even find the original in my work folder. I need to know how to stop this from happeing and get it back to the way it has been working he last 6 months since i purchased this program.
Hi pissedadobeuser,
Does this issue occur with any particular web page?
Are you able to print the webpage to 'Adobe PDF' to convert it to pdf.
Which Browser version, OS version and Acrobat version are you using?
Regards,
Rave -
front page opens works shortly freezes.
only yellow green buttons work. I click yellow to minimize normal top bar menu appears I choose new page, opens works normally.
The restart saved tabs does not work on that first page.Hi @prdstudio3 ,
Thank you for visiting the HP Support Forums. The Serial Number needed to be removed from your Post. This is From our Rules of Participation:
Protect privacy - yours and others'. Don't share anything about yourself that you would not want to see on a road-side billboard. Don't post contact or other personal information-your own or anyone else's-or any content that you receive in one-to-one communications without the author's consent. For example, don’t post your computer’s serial # or contact information publicly, and do not allow someone you don’t know to remotely take control of your computer.
If you need people to contact you directly, either ask them to send you a private message or subscribe to the thread so you will be notified when there are replies. You may also click on your name anywhere in the forum and you will be taken to your profile page, where you can find a list of threads you have participated in.
Sharing personal email addresses, telephone numbers, and last names is not allowed for your safety. If you have any questions feel free to send me a private message in reply.
Thank you
George
I work for HP -
Runtime.getRuntime().exec() does not return
Hello,
I am running into a case where the call to Runtime.getRuntime.exec(command) does not return. The scenario is that the main thread spawns another thread which calls the Runtime.exec(). Since the call does not return, both threads seems to be hung. The jstack output from the main thread shows
----------------- t@2 -----------------
0xfeedab45 ___lwp_cond_wait + 0x15
0xfeb4030d void os::PlatformEvent::park() + 0xa9
0xfebadd48 void ObjectMonitor::wait(long long,bool,Thread*) + 0x26c
0xfe770287 void ObjectSynchronizer::wait(Handle,long long,Thread*) + 0xef
0xfe76ffbb JVM_MonitorWait + 0x20f
0xfb20a032 * java.lang.Object.wait(long) bci:0 (Interpreted frame)
0xfb20308d * java.lang.Thread.join(long) bci:38 line:1143 (Interpreted frame)
0xfb20308d * java.lang.Thread.join() bci:2 line:1196 (Interpreted frame)
0xfb20308d * DataLoader.checkThreadGroup() bci:92 line:316 (Interpreted frame)
0xfb202f27 * DataLoader.checkTables(int) bci:1 line:336 (Interpreted frame)
0xfb202f69 * DataLoader.runLoad(int, java.lang.String, java.lang.String, java.lang.String, com.sabre.fltsked.apm.util.FSIOHelper)
... more below ....
So it is waiting for the spawned thread on a join()
And the jstack dump for the thread that called exec() is
----------------- t@70 -----------------
0xfeed7409 __lwp_park + 0x19
0xfeed1be7 cond_wait_queue + 0x5e
0xfeed1f64 cond_wait_common + 0x1db
0xfeed20d2 condwait + 0x7b
0xfeed20fd cond_wait + 0x21
0xfeed2136 pthread_cond_wait + 0x1b
0x9741082a soft_delete_object_cleanup + 0x57
0x97410906 soft_delete_object + 0x5b
0x97410953 soft_delete_all_objects_in_session + 0x2e
0x97407b7a soft_delete_session + 0xec
0x97407860 soft_delete_all_sessions + 0x3c
0x97402525 finalize_common + 0x66
0x974026ae softtoken_fini + 0x34
0x974355f9 _fini + 0x21
0xfefdd49a remove_hdl + 0x766
0xfefd8be9 dlclose_core + 0xb1
0xfefd8c1d dlclose_intn + 0x21
0xfefd8c96 dlclose_check + 0x2a
0xfefd8d00 dlclose + 0x38
0x97480aeb pkcs11_slottable_delete + 0xb1
0x9747c691 finalize_common + 0xe2
0x9747c6e0 pkcs11_fini + 0x3e
0x9747c3bf pkcs11_fork_child + 0x73
0xfee628b8 postforkchild_handler + 0x2f
0xfeeca9ec fork + 0x12e
0xfe338029 Java_java_lang_UNIXProcess_forkAndExec + 0x395
0xfb20a032 * java.lang.UNIXProcess.forkAndExec(byte[], byte[], int, byte[], int, byte[], boolean, java.io.FileDescriptor, java.io.FileDescriptor, java.io.FileDescriptor) bci
:0 (Interpreted frame)
0xfb202f69 * java.lang.UNIXProcess.<init>(byte[], byte[], int, byte[], int, byte[], boolean) bci:62 line:53 (Interpreted frame)
0xfb20308d * java.lang.ProcessImpl.start(java.lang.String[], java.util.Map, java.lang.String, boolean) bci:182 line:65 (Interpreted frame)
0xfb202f27 * java.lang.ProcessBuilder.start() bci:112 line:452 (Interpreted frame)
0xfb202f27 * java.lang.Runtime.exec(java.lang.String[], java.lang.String[], java.io.File) bci:16 line:593 (Interpreted frame)
0xfb202f27 * java.lang.Runtime.exec(java.lang.String, java.lang.String[], java.io.File) bci:69 line:431 (Interpreted frame)
0xfb202f27 * java.lang.Runtime.exec(java.lang.String) bci:4 line:328 (Interpreted frame)
0xfb202f27 *SQLLoad(java.lang.StringBuffer) bci:181 line:51 (Interpreted frame)
0xfb202e61 *FSLoadThread.run() bci:84 line:54 (Interpreted frame)
The command I am trying to exec is "sqlldr" and I do have it in my PATH variable. Why is that the call to exec does not return? Any ideas?
This is on jdk1.6.0_17
Thanks,
Bijoy.It has definitely forked, and this is the child process. It says so. If it was the parent process it would just show Java code related to launching processes. That does not involve PKCS11. After the fork there are two identical processes with the same stack: the child process of the fork goes on to replace itself with the target command via Unix exec(), which it doesn't look like it is succeeding at. The parent process doesn't do much at all, probably just housekeeping and then a Unix wait() for Process.waitFor() to hook into.
-
When using a proxy server at work, Deezer page does not load normally?
When using a proxy server at work, Deezer page does not load normally, but when I go home and use connection without proxy, everything is fine.
It loads, and some features on the website work, but the look is not the same. Over the proxy it shows just text on the left side of the screen and I can't choose some of the options.
When I go home and use my home connection without proxy, there are no problems, everything is OK.
Could you please solve this?I found that after Firefox v29, a LOT of my settings and<BR>
add-ons were changed / reset. Try this;
'''''[https://support.mozilla.org/en-US/kb/troubleshoot-firefox-issues-using-safe-mode Start Firefox in Safe Mode]'''''
<BR>While you are in safe mode;<BR>
'''''Firefox Options > Advanced > General'''''.<BR>
Look for and turn off '''Use Hardware Acceleration'''.<BR>
Then check ALL of your settings. Browser and add-ons. Then restart.
Maybe you are looking for
-
How to change the QueryRowSet in early access 2?
hi everybody, I do know how to change the query but I want to add a condition on a variable got from a text field, and use by button action. I don't know where to initialize this variable exactly? provided that the query is created in the session bea
-
Smartforn printing with Multiple line items
Hi Guys, I am new to Smartforms and my requirement should sound simple to the experts. I have 2 Page formats for my form. The second Page should only trigger once all the line items are printed on the first page. I created a main window
-
Output individual pages?
Is it possible to output individual pages with Flashpaper from MS Word and still preserve text hyperlinks? I find that you can use Print to output individual pages when you select Flashpaper as the "printer" but it loses the links. My objective is to
-
Fract/Exp String to Numbe Display Format
I have a Numeric String which has a large decimal value, with the Digits of precision ranging upto 16 digits. I want to convert this String to a Numeric value and I have used a 'Fract/Exp String to Number'. In my VI I hae set: Data Type: EXT (because
-
Reservation not being fulfilled
Hi All Is there a report that will show all reservations that have not been fulfilled on the requirements date due to insufficient stock. If there isnt any report what ables can I join using SAP Query to get this information. The example is as follow