java.security.AccessControlException
"Chappelear, Jack" <[email protected]> Fri, 5 Oct 2007 13:40:26 -0400
| Newsgroups | gmane.comp.java.jel.general |
|---|---|
| Message-ID | <65AB4C7A1928DD4A85D9F697165091980DEEC206@gsmbnop10es.firmwide.corp.gs.com> |
This is a multi-part message in MIME format.
--===============1826864680==
Content-class: urn:content-classes:message
Content-Type: multipart/alternative;
boundary="----_=_NextPart_001_01C80776.D05DE9C8"
This is a multi-part message in MIME format.
------_=_NextPart_001_01C80776.D05DE9C8
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Recently added access to System.getProperties and when we run as a java
webstart (with full security permissions) I am seeing
java.security.AccessControlException: access denied
(java.util.PropertyPermission timestamp read) =09
at
java.security.AccessControlContext.checkPermission(AccessControlContext.
java:269) =09
at
java.security.AccessController.checkPermission(AccessController.java:401
) =09
at java.lang.SecurityManager.checkPermission(SecurityManager.java:524) =09
at
java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1276)
at java.lang.System.getProperty(System.java:573) =09
at com.gs.mac.eval.JWSTestStatics.getTimestamp(JWSTestStatics.java:5) =09
at dump.evaluate(Unknown Source) =09
at com.gs.mac.eval.JWSTest.main(JWSTest.java:31) =09
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) =09
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39) =09
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25) =09
at java.lang.reflect.Method.invoke(Method.java:324) =09
at com.sun.javaws.Launcher.executeApplication(Unknown Source) =09
at com.sun.javaws.Launcher.executeMainClass(Unknown Source) =09
at com.sun.javaws.Launcher.continueLaunch(Unknown Source) =09
at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source) =09
at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source) at
com.sun.javaws.Launcher.run(Unknown Source) =09
at java.lang.Thread.run(Thread.java:534)=20
Jel 9.11 works fine running as a native program
All jars are signed and java WS is admitting that I have all-permissions
Java Web Start 1.2 Console, started Fri Oct 05 13:12:20 EDT 2007=20
Java 2 Runtime Environment: Version 1.4.2_13 by Sun Microsystems Inc.=20
Permission requested for:
file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8080/RMJWSTest.
jar
Found certificate chain of length 2 in codesource=20
Found certificate chain of length 2 in cache=20
adding all-permissions object=20
Permission requested for:
file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8080/RMjel.jar=20
Found certificate chain of length 2 in codesource=20
Found certificate chain of length 2 in cache=20
adding all-permissions object=20
Work great w/o the system.getProperty()
Is this related to the custom class loader? Do I need to add System as a
static lib?
package com.gs.mac.eval;
import gnu.jel.CompiledExpression;
import gnu.jel.Evaluator;
import gnu.jel.Library;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class JWSTest {
private static String version =3D "1.2";
public static void main(String[] args) throws Throwable {
String expr =3D "getTimestamp()";
// Set up the library
Class[] staticLib =3D new Class[1];
staticLib[0] =3D JWSTestStatics.class;
Library lib =3D new Library(staticLib, null, null, null);
lib.markStateDependent("getTimestamp", null);
CompiledExpression c =3D Evaluator.compile(expr, lib);
String s =3D (String) c.evaluate(null);
System.out
.println("This is version " +
JWSTest.version + " (the timestamp value is "
+
System.getProperty("timestamp") + ")" +
System.getProperty("line.separator")
+
System.getProperties());
JFrame frame =3D new JFrame();
Dimension d =3D
Toolkit.getDefaultToolkit().getScreenSize();
frame.setTitle("JWSTest version " + JWSTest.version);
frame.setSize(d.width * 3 / 4, d.height * 3 / 4);
frame.setLocation(d.width / 8, d.height / 8);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JTextArea textArea =3D new JTextArea(20, 60);
textArea
.setText("This is version " +
JWSTest.version + " (the timestamp value is "
+
System.getProperty("timestamp") + ")" +
System.getProperty("line.separator")
+
System.getProperties());
JScrollPane scrollPane =3D new JScrollPane(textArea);
frame.getContentPane().add(scrollPane);
frame.setVisible(true);
}
}
package com.gs.mac.eval;
public class JWSTestStatics {
public static String getTimestamp() {
return System.getProperty("timestamp");
}
}
------_=_NextPart_001_01C80776.D05DE9C8
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.7653.2">
<TITLE>java.security.AccessControlException</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<P><FONT SIZE=3D2 FACE=3D"Arial">Recently added access to =
System.getProperties and when we run as a java webstart (with full =
security permissions) I am seeing</FONT></P>
<P><FONT SIZE=3D2 FACE=3D"Arial">java.security.AccessControlException: =
access denied (java.util.PropertyPermission timestamp read) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.security.AccessControlContext.checkPermission(AccessControlContext.j=
ava:269) </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.security.AccessController.checkPermission(AccessController.java:401)=
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.SecurityManager.checkPermission(SecurityManager.java:524) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1276) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.System.getProperty(System.java:573) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.gs.mac.eval.JWSTestStatics.getTimestamp(JWSTestStatics.java:5) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at dump.evaluate(Unknown Source) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.gs.mac.eval.JWSTest.main(JWSTest.java:31) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java=
:39) </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI=
mpl.java:25) </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.reflect.Method.invoke(Method.java:324) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.executeApplication(Unknown Source) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.executeMainClass(Unknown Source) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.continueLaunch(Unknown Source) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
com.sun.javaws.Launcher.handleLaunchFile(Unknown Source) =
at com.sun.javaws.Launcher.run(Unknown Source) =
</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">at =
java.lang.Thread.run(Thread.java:534) </FONT>
</P>
<P><FONT SIZE=3D2 FACE=3D"Arial">Jel 9.11 works fine running as a native =
program</FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">All jars are signed and java WS is =
admitting that I have all-permissions</FONT>
</P>
<P><FONT SIZE=3D2 FACE=3D"Arial">Java Web Start 1.2 Console, started Fri =
Oct 05 13:12:20 EDT 2007 </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">Java 2 Runtime Environment: Version =
1.4.2_13 by Sun Microsystems Inc. </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">Permission requested for: </FONT><A =
HREF=3D"file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8080/RMJ=
WSTest.jar"><U><FONT COLOR=3D"#0000FF" SIZE=3D2 =
FACE=3D"Arial">file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8=
080/RMJWSTest.jar</FONT></U></A>
<BR><FONT SIZE=3D2 FACE=3D"Arial">Found certificate chain of length 2 in =
codesource </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">Found certificate chain of length 2 in =
cache </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">adding all-permissions object </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">Permission requested for: </FONT><A =
HREF=3D"file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8080/RMj=
el.jar"><U><FONT COLOR=3D"#0000FF" SIZE=3D2 =
FACE=3D"Arial">file:/C:/temp/javaws/cache/http/Dnhdtdsa01.ny.fw.gs.com/P8=
080/RMjel.jar</FONT></U></A><FONT SIZE=3D2 FACE=3D"Arial"> </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">Found certificate chain of length 2 in =
codesource </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">Found certificate chain of length 2 in =
cache </FONT>
<BR><FONT SIZE=3D2 FACE=3D"Arial">adding all-permissions object </FONT>
</P>
<BR>
<P><FONT SIZE=3D2 FACE=3D"Arial">Work great w/o the =
system.getProperty()</FONT>
</P>
<P><FONT SIZE=3D2 FACE=3D"Arial">Is this related to the custom class =
loader? Do I need to add System as a static lib?</FONT>
</P>
<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">package</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> com.gs.mac.eval;</FONT>
<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> gnu.jel.CompiledExpression;</FONT>
<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> gnu.jel.Evaluator;</FONT>
<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> gnu.jel.Library;</FONT>
</P>
<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> java.awt.Dimension;</FONT>
<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> java.awt.Toolkit;</FONT>
<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> java.awt.event.WindowAdapter;</FONT>
<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> java.awt.event.WindowEvent;</FONT>
</P>
<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> javax.swing.JFrame;</FONT>
<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> javax.swing.JScrollPane;</FONT>
<BR><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">import</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> javax.swing.JTextArea;</FONT>
</P>
<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">public</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"></FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">class</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> JWSTest {</FONT>
<BR> <B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">private</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">static</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> String</FONT><I> <FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">version</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> =3D</FONT> <FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">"1.2"</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">;</FONT>
<BR> <B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">public</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">static</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">void</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> main(String[] =
args)</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">throws</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> Throwable {</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">String expr =3D</FONT> <FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">"getTimestamp()"</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">;</FONT>
<BR> =
<FONT COLOR=3D"#3F7F5F" =
SIZE=3D2 FACE=3D"Courier New">// Set up the library</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">Class[] staticLib =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> Class[</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">1</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">];</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">staticLib[0] =3D =
JWSTestStatics.</FONT><B><FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">class</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">;</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">Library lib =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"><STRIKE> =
Library</STRIKE>(staticLib,</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">,</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">,</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">lib.markStateDependent(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">"getTimestamp"</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">,</FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 =
FACE=3D"Courier New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">CompiledExpression c =3D =
Evaluator.</FONT><I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">compile</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">(expr, lib);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">String s =3D (String) =
c.evaluate(</FONT><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">null</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">System.</FONT><I><FONT COLOR=3D"#0000C0" =
SIZE=3D2 FACE=3D"Courier New">out</FONT></I>
<BR> =
=
=
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">.println(</FONT><FONT COLOR=3D"#2A00FF" =
SIZE=3D2 FACE=3D"Courier New">"This is version "</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> + =
JWSTest.</FONT><I><FONT COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier =
New">version</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> +</FONT> <FONT COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">" (the timestamp value is "</FONT>
<BR> =
=
=
=
=
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">+ System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperty</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">"timestamp"</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">) +</FONT> <FONT COLOR=3D"#2A00FF" SIZE=3D2 =
FACE=3D"Courier New">")"</FONT><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"> + System.</FONT><I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">getProperty</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">(</FONT><FONT COLOR=3D"#2A00FF" SIZE=3D2 =
FACE=3D"Courier New">"line.separator"</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">)</FONT></P>
<P> =
=
=
=
=
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">+ System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperties</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">());</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">JFrame frame =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> JFrame();</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">Dimension d =3D Toolkit.</FONT><I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">getDefaultToolkit</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">().getScreenSize();</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.setTitle(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier New">"JWSTest version =
"</FONT><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> + =
JWSTest.</FONT><I><FONT COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier =
New">version</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.setSize(d.</FONT><FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">width</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> * 3 / 4, d.</FONT><FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">height</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> * 3 / 4);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.setLocation(d.</FONT><FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">width</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> / 8, d.</FONT><FONT =
COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier New">height</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> / 8);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.addWindowListener(</FONT><B><FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> WindowAdapter() =
{</FONT>
<BR> =
=
<B> <FONT COLOR=3D"#7F0055" =
SIZE=3D2 FACE=3D"Courier New">public</FONT></B><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT COLOR=3D"#7F0055" =
SIZE=3D2 FACE=3D"Courier New">void</FONT></B><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"> windowClosing(WindowEvent e) {</FONT>
<BR> =
=
=
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">exit</FONT></I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">(0);</FONT>
<BR> =
=
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">}</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">});</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">JTextArea textArea =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> JTextArea(20, =
60);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">textArea</FONT>
<BR> =
=
=
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">.setText(</FONT><FONT COLOR=3D"#2A00FF" =
SIZE=3D2 FACE=3D"Courier New">"This is version "</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> + =
JWSTest.</FONT><I><FONT COLOR=3D"#0000C0" SIZE=3D2 FACE=3D"Courier =
New">version</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> +</FONT> <FONT COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">" (the timestamp value is "</FONT>
<BR> =
=
=
=
=
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">+ System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperty</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">"timestamp"</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">) +</FONT> <FONT COLOR=3D"#2A00FF" SIZE=3D2 =
FACE=3D"Courier New">")"</FONT><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"> + System.</FONT><I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New">getProperty</FONT></I><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">(</FONT><FONT COLOR=3D"#2A00FF" SIZE=3D2 =
FACE=3D"Courier New">"line.separator"</FONT><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">)</FONT></P>
<P> =
=
=
=
=
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">+ System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperties</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">());</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">JScrollPane scrollPane =3D</FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">new</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> =
JScrollPane(textArea);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier =
New">frame.getContentPane().add(scrollPane);</FONT>
<BR> =
<FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">frame.setVisible(</FONT><B><FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">true</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">);</FONT>
<BR> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">}</FONT>
<BR><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">}</FONT>
</P>
<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">package</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> com.gs.mac.eval;</FONT>
</P>
<P><B><FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">public</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"></FONT><B> <FONT COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier =
New">class</FONT></B><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier =
New"> JWSTestStatics {</FONT>
<BR> <B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">public</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"></FONT><B> <FONT =
COLOR=3D"#7F0055" SIZE=3D2 FACE=3D"Courier New">static</FONT></B><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New"> String getTimestamp() =
{</FONT>
<BR> =
<B> <FONT COLOR=3D"#7F0055" =
SIZE=3D2 FACE=3D"Courier New">return</FONT></B><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New"> System.</FONT><I><FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">getProperty</FONT></I><FONT =
COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">(</FONT><FONT =
COLOR=3D"#2A00FF" SIZE=3D2 FACE=3D"Courier =
New">"timestamp"</FONT><FONT COLOR=3D"#000000" SIZE=3D2 =
FACE=3D"Courier New">);</FONT>
<BR> <FONT COLOR=3D"#000000" =
SIZE=3D2 FACE=3D"Courier New">}</FONT>
</P>
<P><FONT COLOR=3D"#000000" SIZE=3D2 FACE=3D"Courier New">}</FONT>
</P>
</BODY>
</HTML>
------_=_NextPart_001_01C80776.D05DE9C8--
--===============1826864680==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Help-jel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-jel
--===============1826864680==--