home *** CD-ROM | disk | FTP | other *** search
- import java.io.DataInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.util.Date;
- import java.util.StringTokenizer;
-
- public class jax {
- public static boolean f185 = false;
- public static c88 f152;
- public static String f184;
- public static String f183;
-
- static {
- boolean var10000 = false;
- var10000 = false;
- }
-
- public static void m158(String var0) {
- f152.m158(var0);
- }
-
- public static void m13(String var0) {
- f152.m13(var0);
- }
-
- public static void m49(String var0) {
- f152.m49(var0);
- }
-
- public static void m293(String var0, boolean var1) {
- if (var1 || !var0.startsWith("java.") && (f185 || !var0.startsWith("sunw.") || var0.indexOf("hotjava") != -1 || var0.indexOf("html") != -1) && (f185 || !var0.startsWith("com.ms.")) && (f185 || !var0.startsWith("sun.")) && (f184 == null || var0.startsWith(f184))) {
- try {
- c74.m45(var0);
- } catch (NoClassDefFoundError var3) {
- f152.m194("cannot find class " + ((Throwable)var3).getMessage());
- }
-
- }
- }
-
- public static void m294() {
- try {
- FileInputStream var0 = new FileInputStream(new File(f183 + ".fcn"));
- DataInputStream var1 = new DataInputStream(var0);
- int var2 = 1;
-
- while(true) {
- String var3 = var1.readLine();
- if (var3 == null) {
- return;
- }
-
- var3 = var3.trim();
- if (var3.length() != 0 && Character.isJavaIdentifierStart(var3.charAt(0))) {
- m293(var3, true);
-
- c86 var4;
- try {
- var4 = (c86)c74.m45(var3);
- } catch (Exception var6) {
- var4 = null;
- }
-
- if (var4 == null) {
- f152.m194("at line " + var2 + " in file " + f183 + ".fcn, cannot find class \"" + var3 + "\"\n");
- ++var2;
- } else {
- if (c99.f97) {
- m13("Found fixed class name class \"" + var4.f10 + "\"");
- }
-
- var4.m168();
- var4.m170();
- ++var2;
- }
- }
- }
- } catch (FileNotFoundException var7) {
- f152.m194("no \"" + f183 + ".fcn\" file with fixed class names");
- } catch (IOException var8) {
- f152.m194("error reading \"" + f183 + ".fcn\" file.\n");
- }
-
- }
-
- public static void m295() {
- try {
- FileInputStream var0 = new FileInputStream(new File(f183 + ".daf"));
- DataInputStream var1 = new DataInputStream(var0);
- int var2 = 1;
-
- while(true) {
- String var3 = var1.readLine();
- if (var3 == null) {
- return;
- }
-
- var3 = var3.trim();
- if (var3.length() != 0 && Character.isJavaIdentifierStart(var3.charAt(0))) {
- StringTokenizer var4 = new StringTokenizer(var3, " ");
- String var5 = (String)var4.nextElement();
- String var6 = (String)var4.nextElement();
- String var7 = (String)var4.nextElement();
-
- c90 var8;
- try {
- var8 = (c90)c74.m29(var5, var6, var7);
- } catch (Exception var10) {
- var8 = null;
- }
-
- if (var8 == null) {
- f152.m194("file \"" + f183 + ".daf\" at line " + var2 + " no such field found: " + var5 + "." + var6 + " " + var7);
- } else {
- m13("readDynamicallyAccessedFieldNames: read \"" + var5 + "." + var6 + " " + var7 + "\"");
- var8.m202();
- }
-
- ++var2;
- }
- }
- } catch (FileNotFoundException var11) {
- f152.m194("no \"" + f183 + ".daf\" file with names of dynamically accessed fields\n");
- } catch (IOException var12) {
- f152.m194("error reading \"" + f183 + ".daf\" file.\n");
- }
-
- }
-
- public static void m296() {
- try {
- FileInputStream var0 = new FileInputStream(new File(f183 + ".dim"));
- DataInputStream var1 = new DataInputStream(var0);
- int var2 = 1;
-
- while(true) {
- String var3 = var1.readLine();
- if (var3 == null) {
- return;
- }
-
- var3 = var3.trim();
- if (var3.length() != 0 && Character.isJavaIdentifierStart(var3.charAt(0))) {
- StringTokenizer var4 = new StringTokenizer(var3, " ");
- String var5 = (String)var4.nextElement();
- String var6 = (String)var4.nextElement();
- String var7 = (String)var4.nextElement();
-
- c91 var8;
- try {
- var8 = (c91)c74.m31(var5, var6, var7);
- } catch (Exception var10) {
- var8 = null;
- }
-
- if (var8 == null) {
- f152.m194("file \"" + f183 + ".dim\" at line " + var2 + " no such method found: " + var5 + "." + var6 + " " + var7);
- } else {
- m13("readDynamicallyCalledMethodNames: read \"" + var5 + "." + var6 + var7 + "\"");
- var8.m214();
- }
-
- ++var2;
- }
- }
- } catch (FileNotFoundException var11) {
- f152.m194("no \"" + f183 + ".dim\" file with names of dynamically invoked methods");
- } catch (IOException var12) {
- f152.m194("error reading \"" + f183 + ".dim\" file.\n");
- }
-
- }
-
- public static void m297() {
- try {
- FileInputStream var0 = new FileInputStream(new File(f183 + ".dlc"));
- DataInputStream var1 = new DataInputStream(var0);
- int var2 = 1;
-
- while(true) {
- String var3 = var1.readLine();
- if (var3 == null) {
- return;
- }
-
- m293(var3, true);
- c86 var4 = null;
-
- try {
- var4 = (c86)c74.m45(var3);
- } catch (NoClassDefFoundError var6) {
- f152.m194("at line " + var2 + " in file " + f183 + ".dlc, cannot find class \"" + ((Throwable)var6).getMessage() + "\"");
- }
-
- if (var4 == null) {
- ++var2;
- } else {
- f152.f131 = true;
- m13("Found dynamically loaded class \"" + var4.f10 + "\"");
- var4.m172();
- ++var2;
- }
- }
- } catch (FileNotFoundException var7) {
- f152.m194("no \"" + f183 + ".dlc\" file with dynamically loaded class names");
- } catch (IOException var8) {
- f152.m194("error reading \"" + f183 + ".dlc\" file.\n");
- }
-
- }
-
- private static final void m298() {
- m49("\n" + "\n" + " " + "jax" + " generates three files: two zip files and a log file.\n" + " The zip files are:\n" + " \"<class name>_orig." + "jax" + ".zip\" contains the uncompressed, and\n" + " \"<class name>." + "jax" + ".zip\" contains the compressed program.\n" + " The log file is named \"" + "<class name>_jax.log\".\n" + "\n" + " " + "jax" + " looks for 3 optional input files:\n" + " Create a file \"<class name>_jax.dlc\" in the current \n" + " directory containing the names of all the \n" + " classes that are loaded dynamically.\n" + " Example:\n" + " \n" + " com.acme.ClassOne\n" + " com.acme.ClassTwo\n" + " com.acme.ClassThree\n" + " \n" + " Create a file \"<class name>_jax.dim\" in the current \n" + " directory containing the names of all the \n" + " methods that are called using reflection\n" + " Pattern: <classname> <methodname> " + " <descriptor> using JVM types.\n" + " Example:\n" + " \n" + " com.acme.ClassFour specialMethod1 (I)V\n" + " com.acme.ClassFour specialMethod2 (III)I\n" + " com.acme.ClassFour <init> " + "(Ljava/lang/Object;)V\n" + " \n" + " Create a file \"<class name>_jax.daf\" in the current \n" + " directory containing the names of all the \n" + " fields that are accessed using reflection\n" + " Pattern: <classname> <fieldname> " + " <descriptor> using JVM types.\n" + " Example:\n" + " \n" + " com.acme.ClassFive specialField1 (I)V\n" + " com.acme.ClassSix specialField2 (III)I\n" + " com.acme.ClassSeven specialField3 " + "Ljava/lang/Object;\n" + " \n" + "\n" + " Use the enclosed \"reflect\" program to \n" + " find out all classes that are dynamically loaded.\n" + " Example:\n" + " \n" + " java reflect MyApplet.zip\n" + " \n" + "\n" + " Use the enclosed \"methods\" and \"fields\" programs to \n" + " get a listing of available methods and fields.\n" + " Example:\n" + " \n" + " java methods java.lang.String\n" + " java fields java.lang.String\n" + " \n" + " See http://www.alphaWorks.ibm.com/formula/jax for more information.\n" + " ");
- }
-
- private static final void m299() {
- m49("\n" + "Usage: " + "jax" + " [<-options>] <class name>\n" + " Where:\n" + " <class name>: the starting class name\n" + " <-options> are:\n" + " -version: show version number\n" + " -help: show help information\n" + "" + " -notransform: don't merge/eliminate classes\n" + " -noinline: don't inline methods\n" + " -nodevirtualize: don't make virtual method calls nonvirtual\n" + " -noobfuscate: don't shorten internal names\n" + " -noverify: don't verify the compressed application\n" + " -nocompatibleserialization: don't preserve (de)serialization " + "compatibility \n" + " between original/JAXed versions of the " + "application\n" + "" + "\n");
- System.exit(1);
- }
-
- public static void m300() {
- m13("");
- m13("Java Execution Environment Information:");
- m13("=================================================================");
- m13("creation time = " + new Date());
- m13("os.name = " + System.getProperty("os.name"));
- m13("os.arch = " + System.getProperty("os.arch"));
- m13("os.version = " + System.getProperty("os.version"));
- m13("java.version = " + System.getProperty("java.version"));
- m13("java.vendor = " + System.getProperty("java.vendor"));
- m13("java.vendor.url = " + System.getProperty("java.vendor.url"));
- m13("java.class.version = " + System.getProperty("java.class.version"));
- m13("java.class.path = " + System.getProperty("java.class.path"));
- m13("java.home = " + System.getProperty("java.home"));
- m13("java_compiler = " + System.getProperty("java.compiler"));
- m13("=================================================================");
- m13("");
- }
-
- public static void m301() {
- m158("\nOptions: " + (f152.f129 ? "obfuscate " : "noobfuscate ") + (f152.f128 ? "transform " : "notransform ") + (f152.f126 ? "verify " : "") + (f152.f127 ? "devirtualize " : "nodevirtualize ") + "" + (f152.f124 ? "inline " : "noinline ") + (f152.f127 ? "compatibleserialization " : "nocompatibleserialization ") + "\n");
- }
-
- public static void m302() {
- Date var0 = new Date();
- Date var1 = new Date("Jun 3 1999");
- if (var0.getTime() > var1.getTime()) {
- m158("");
- m158("---------------------------------------------------");
- m158("The license for this free software from IBM has");
- m158("expired. A new version with major improvements ");
- m158("and bug fixes may have been released. See: ");
- m158("http://www.alphaWorks.ibm.com/formula/jax ");
- m158("---------------------------------------------------");
- m158("");
- } else {
- m158("");
- m158("Your free license expires on " + "Jun 3 1999" + ". After this date,");
- m158("download a new version with " + "major improvements and bug fixes.");
- }
-
- }
-
- private static final void m303(String var0) {
- if (var0.equals("version")) {
- System.out.println("jax V5.0-Wednesday-Mar-3-1999 Copyright IBM 1997-1999. All rights reserved.");
- System.exit(1);
- }
-
- if (var0.equals("obfuscate")) {
- f152.f129 = true;
- } else if (var0.equals("noobfuscate")) {
- f152.f129 = false;
- } else if (var0.equals("keeppackages")) {
- c99.f153 = true;
- } else {
- if (var0.equals("help")) {
- m298();
- System.exit(5);
- }
-
- if (var0.equals("noverify")) {
- f152.f126 = false;
- } else if (var0.equals("devirtualize")) {
- f152.f127 = true;
- } else if (var0.equals("nodevirtualize")) {
- f152.f127 = false;
- } else if (var0.equals("inline")) {
- f152.f124 = true;
- } else if (var0.equals("noinline")) {
- f152.f124 = false;
- } else if (var0.equals("transform")) {
- f152.f128 = true;
- } else if (var0.equals("notransform")) {
- f152.f128 = false;
- } else if (var0.equals("compatibleserialization")) {
- f152.f123 = true;
- } else if (var0.equals("nocompatibleserialization")) {
- f152.f123 = false;
- } else {
- m49("*** unknown option \"-" + var0 + "\"");
- m299();
- }
- }
- }
-
- private static final void m304(String[] var0) {
- f184 = null;
-
- for(int var1 = 0; var1 < var0.length; ++var1) {
- if (var0[var1].startsWith("-")) {
- m303(var0[var1].substring(1));
- } else if (f152.f136 == null) {
- f152.m181(var0[var1]);
- } else if (f184 == null) {
- f184 = var0[var1];
- } else {
- m49("\n*** too many arguments that are not options\n");
- m299();
- }
- }
-
- if (f152.f136 == null) {
- m49("\n*** Must specify class name\n");
- m299();
- }
-
- if (f152.f136.indexOf(File.separator) != -1) {
- m49("\nPlease specify class with \".\" separators\n");
- m299();
- }
-
- if (!f152.f129 && c99.f153) {
- m49("\nSpecified option -keepPackages only makes " + "sense when \nused in combination with obfuscation.");
- m49("\nPlease do not specify -noobfuscate.");
- m299();
- }
-
- m49("ProgramName is \"" + f152.f136 + "\"");
- m49("JDK used is " + System.getProperty("java.vendor") + " version " + System.getProperty("java.version"));
- }
-
- private static final void m235(String[] var0) {
- f152 = new c88(0);
- m304(var0);
- m49("");
- m49("jax V5.0-Wednesday-Mar-3-1999 Copyright IBM 1997-1999. All rights reserved.");
- m49("Info inside IBM: " + "http://w3.watson.ibm.com/~laffra/jax");
- m49("Info outside IBM: " + "http://www.alphaWorks.ibm.com/formula/jax");
- m49("");
- m302();
- m13("");
- m13("jax V5.0-Wednesday-Mar-3-1999 Copyright IBM 1997-1999. All rights reserved.");
- m13("Info inside IBM: " + "http://w3.watson.ibm.com/~laffra/jax");
- m13("Info outside IBM: " + "http://www.alphaWorks.ibm.com/formula/jax");
- m13("");
- m301();
- m300();
- long var1 = System.currentTimeMillis();
- c9.f32 = f152.f32;
- c74.f32 = f152.f32;
- c13.f32 = f152.f32;
- c59.f32 = f152.f32;
- m49("loading, this may take a while");
- m49(" ");
- c9.f36 = true;
- c99.m245(f152);
- f183 = f152.f135 + "_" + "jax";
- m297();
- m294();
- m293(f152.f136, false);
- m296();
- m295();
- if (c74.f106.m48()) {
- m158("\n" + "========================================================\n" + "Jax: could not find class " + f152.f136 + "\n" + "please check your spelling and/or classpath\n" + "========================================================\n" + "");
- System.exit(7);
- }
-
- c9.f36 = false;
- System.out.print("\r \r");
- m13(" ");
- StringBuffer var10000 = (new StringBuffer()).append("finished loading, total ");
- c12 var6 = c74.f106;
- m158(var10000.append(var6.f7).append(" classes").toString());
- c99.m235(var0);
- f152.m179(f152.f132);
- f152.m178();
- long var3 = System.currentTimeMillis();
- m158("\nTime used for analysis: " + (var3 - var1) / 1000L + " seconds.\n");
- m158("\nThanks for using JAX, a technology preview from IBM.");
- m158("Please email your feedback to: jax@watson.ibm.com");
- m158("");
- System.exit(0);
- }
-
- public static void main(String[] var0) {
- try {
- m235(var0);
- } catch (Exception var2) {
- m13(((Throwable)var2).toString());
- ((Throwable)var2).printStackTrace(f152.f32);
- System.out.println(((Throwable)var2).toString());
- ((Throwable)var2).printStackTrace(System.out);
- }
-
- }
- }
-