Eclipse 怎样在java application 模式的项目中运行Job
Eclipse 怎样在java application 模式的项目中运行Job
我在eclipse 中建立一个新的Job
import java.text.SimpleDateFormat;
import java.util.Date;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
public final class Clock {
public Clock() {
super();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Job job = new Job("Clock Job") {
protected IStatus run(IProgressMonitor monitor) {
System.out.println("Run in Job");
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Clock in Job");
shell.setSize(200, 100);
SimpleDateFormat bartDateFormat =new SimpleDateFormat("MMMM-dd-yyyy EEEE HH-mm-ss-SSS");
Date date = new Date();
Label lab = new Label(shell,SWT.NONE);
lab.setText(bartDateFormat.format(date));
lab.pack();
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep ();
}
display.dispose ();
lab.dispose();
return Status.OK_STATUS;
}
};
job.schedule(); // start as soon as possible
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Clock in main");
shell.setSize(200, 100);
SimpleDateFormat bartDateFormat =new SimpleDateFormat("MMMM-dd-yyyy EEEE HH-mm-ss-SSS");
Date date = new Date();
Label lab = new Label(shell,SWT.NONE);
lab.setText(bartDateFormat.format(date));
lab.pack();
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep ();
}
display.dispose ();
lab.dispose();
System.out.println("Run in main");
}
}
编译没问题,但是运行时会
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.J9VMInternals.initialize(J9VMInternals.java:214)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:157)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:157)
at Clock.main(Clock.java:24)
Caused by: java.lang.SecurityException: Signers of 'org.eclipse.core.runtime.ListenerList' do not match signers of other classes in package
at java.lang.ClassLoader.checkPackageSigners(ClassLoader.java:281)
at java.lang.ClassLoader.defineClass(ClassLoader.java:215)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:148)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:557)
at java.net.URLClassLoader.access$400(URLClassLoader.java:120)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:962)
at java.security.AccessController.doPrivileged(AccessController.java:275)
at java.net.URLClassLoader.findClass(URLClassLoader.java:488)
at java.lang.ClassLoader.loadClass(ClassLoader.java:607)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:327)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at org.eclipse.core.internal.jobs.JobListeners.<init>(JobListeners.java:60)
at org.eclipse.core.internal.jobs.JobManager.<init>(JobManager.java:85)
at org.eclipse.core.internal.jobs.JobManager.getInstance(JobManager.java:149)
at org.eclipse.core.internal.jobs.InternalJob.<clinit>(InternalJob.java:46)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:192)
... 3 more
请问怎么才能在Java application模式中运行Job?