Converting Java into J/link runnable code
- To: mathgroup at smc.vnet.net
- Subject: [mg104429] Converting Java into J/link runnable code
- From: Garapata <warsaw95826 at mypacks.net>
- Date: Sat, 31 Oct 2009 01:53:04 -0500 (EST)
J/link seems like a good way to go to set up timers so, I found this
short Java example that sets up a recurring beep. If I can get it to
work, I can do a lot of other things with the ideas:
import java.sql.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.Toolkit;
public class Main {
public static void main (String[] argv) throws Exception {
Date timeToRun =
new Date (System.currentTimeMillis() +
numberOfMillisecondsInTheFuture);
Timer timer = new Timer();
timer.schedule (new TimerTask() {
public void run() {
Toolkit.getDefaultToolkit.beep();
}
}, timeToRun);
}
}
______________
I've tried to follow the J/link documentation to translate the above
into something that will work in Mathematica:
Needs["JLink`"];
InstallJava[];
myTimer[numberOfMillisecondsInTheFuture_] :=
JavaBlock[
InstallJava[];
LoadJavaClass["java.sql.Date"];
LoadJavaClass["java.util.Timer"];
LoadJavaClass["java.util.TimerTask"];
LoadJavaClass["java.awt.Toolkit"];
public class Main
{
public static void main[String[] argv] throws Exception
{
Date timeToRun = JavaNew["Date", System`currentTimeMillis[] +
numberOfMillisecondsInTheFuture];
Timer timer = JavaNew["Timer"];
timer@schedule[JavaNew["TimerTask"]
{
public void run[]
{
Toolkit`getDefaultToolkit[]@beep[]
}
}, timeToRun];
}
}
]
______________
This gives me lots of errors:
In[15]:= myTimer[300]
During evaluation of In[15]:= Java::excptn: A Java exception occurred:
java.lang.ClassNotFoundException: Date
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247).
During evaluation of In[15]:= LoadJavaClass::fail: Java failed to load
class Date. >>
During evaluation of In[15]:= Set::write: Tag Times in Date timeToRun
is Protected. >>
During evaluation of In[15]:= Java::excptn: A Java exception occurred:
java.lang.ClassNotFoundException: Timer
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247).
During evaluation of In[15]:= LoadJavaClass::fail: Java failed to load
class Timer. >>
During evaluation of In[15]:= Set::write: Tag Times in Timer $Failed
is Protected. >>
Out[15]= {{class Exception Main Null public^2 static throws void main[
argv String[]]}}
__________________
Any ideas to help get this working?
Examples that show Java code against J/link implementation would help
a lot (for the above code or any code).
Thanks...