- From: Zahd Rahman <zahidr@btconnect.com>
- Date: Sat, 22 Feb 2003 16:44:56 -0000
- To: <www-jigsaw@w3.org>
- Message-ID: <004701c2da91$bb851790$3471fea9@objectwoszbz07>
upload file with multipartWhat do you think of my runajar anywhere in the world ?
/*
* runjar.java
*
* Created on 22 February 2003, 16:12
*/
package runajar;
/**
*
* @author Zahid Rahman
Copyright - All rights reserved
*/
import java.net.*;
import java.io.*;
/**
* <p>Title: run a jar <u>from</u> anywhere in the world</p>
* <p>Description: java -jar runajar.jar <url or path of the jar to run> <arguments>
* or: runajar <url or path of the jar to run> <arguments></p>
* <p>Company: objectworlds</p>
* @author zahid
* @version 1.0
*
*/
public class Runajar {
static final int BLOCK_SIZE = 65500; // bytes
static byte[] buf = new byte[BLOCK_SIZE];
static final int SLEEP_UNIT = 333; // msec
static final String TMP_DIR = "/tmp/runjar";
public static void main(String[] args) {
try {
if (args.length > 0) {
String urlstring = args[0]; // jar url string
File here = new File(".");
File localcopy = new File(urlstring);
if (!localcopy.exists()) {
URL url = new URL(urlstring);
String filename = urlstring.substring(urlstring.lastIndexOf('/') + 1); // jar name
File root = new File(here.getAbsolutePath()); // is not it something?
while (root.getParent() != null && root.getParent() != root.getCanonicalPath()) {
root = new File(root.getParent()); // that's the way to find the root
}
File tmpdir = new File(root, TMP_DIR);
if (!tmpdir.exists()) tmpdir.mkdirs();
localcopy = new File(tmpdir, filename); // local copy of the jar
InputStream is = new BufferedInputStream(url.openStream());
OutputStream os = new BufferedOutputStream(new FileOutputStream(localcopy));
pipe(is, os, true);
os.close();
is.close();
}
String javaexec = System.getProperty("java.home") + File.separator +
"bin" + File.separator +
"java";
String cmd = javaexec + " -jar " + localcopy.getAbsolutePath();
for (int i = 1; i < args.length; i++) {
cmd += """ + args[i] + """;
}
Process process = Runtime.getRuntime().exec(cmd, null, here);
int result = 0;
for (boolean isRunning = true; isRunning;) {
Thread.sleep(SLEEP_UNIT);
try {
result = process.exitValue();
isRunning = false;
} catch (IllegalThreadStateException ie) {}
try {
pipe(System.in, process.getOutputStream(), false);
pipe(process.getErrorStream(), System.err, false);
pipe(process.getInputStream(), System.out, false);
} catch(Exception e) {}
}
System.exit(result);
}
} catch (Exception e) {
System.err.println(e);
}
}
static void pipe(InputStream in, OutputStream out, boolean isBlocking) throws IOException {
int nread;
int navailable;
int total = 0;
synchronized (in) {
while((navailable = isBlocking ? Integer.MAX_VALUE : in.available()) > 0 &&
(nread = in.read(buf, 0, Math.min(buf.length, navailable))) >= 0) {
out.write(buf, 0, nread);
total += nread;
}
}
out.flush();
}
}
running instructions
runajar http://www.objectworlds/myapp.jar
Best Regards,
Zahid Rahman
http://www.objectworlds.com
Received on Saturday, 22 February 2003 14:49:16 UTC