|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- How to run program examples
- ---------------------------
-
- JDK 1.4 or later is needed.
-
- ### 0. If you have Apache Ant
-
- Run the sample-all task.
- Otherwise, follow the instructions below.
-
- ### 1. Move to the directory where this `Examples.md` file is located.
-
- In the following instructions, we assume that the `javassist.jar`
- file is included in the class path.
- For example, the javac and java commands must receive
- the following `classpath` option:
-
- ```
- -classpath ".:javassist.jar"
- ```
-
- If the operating system is Windows, the path
- separator must be not `:` (colon) but
- `;` (semicolon). The java command can receive
- the `-cp` option
- as well as `-classpath`.
-
- If you don't want to use the class-path option, you can make
- `javassist.jar` included in the `CLASSPATH`
- environment:
-
- ```
- export CLASSPATH=.:javassist.jar
- ```
-
- or if the operating system is Windows:
-
- ```
- set CLASSPATH=.;javassist.jar
- ```
-
- Otherwise, you can copy `javassist.jar` to the directory
- <_java-home_>`/jre/lib/ext`.
-
-
- <_java-home_> depends on the system. It is usually
- `/usr/local/java` or `c:\j2sdk1.4\`, etc.
-
- ### 2. `sample/Test.java`
-
- This is a very simple program using Javassist.
-
- To run, type the commands:
-
- ```
- % javac sample/Test.java
- % java sample.Test
- ```
-
- For more details, see `sample/Test.java`
-
- ### 3. `sample/reflect/*.java`
-
- This is the "verbose metaobject" example well known in reflective
- programming. This program dynamically attaches a metaobject to
- a Person object. The metaobject prints a message if a method
- is called on the Person object.
-
- To run, type the commands:
-
- ```
- % javac sample/reflect/*.java
- % java javassist.tools.reflect.Loader sample.reflect.Main Joe
- ```
-
- Compare this result with that of the regular execution without reflection:
-
- ```
- % java sample.reflect.Person Joe
- ```
-
- For more details, see sample/reflect/Main.java
-
- Furthermore, the Person class can be statically modified so that
- all the Person objects become reflective without sample.reflect.Main.
- To do this, type the commands:
-
- ```
- % java javassist.tools.reflect.Compiler sample.reflect.Person -m sample.reflect.VerboseMetaobj
- ```
-
- Then,
-
- ```
- % java sample.reflect.Person Joe
- ```
-
- ### 4. `sample/duplicate/*.java`
-
- This is another example of reflective programming.
- To run, type the commands:
-
- ```
- % javac sample/duplicate/*.java
- % java sample.duplicate.Main
- ```
-
- Compare this result with that of the regular execution without reflection:
-
- ```
- % java sample.duplicate.Viewer
- ```
-
- For more details, see
- `sample/duplicate/Main.java`
-
- ### 5. `sample/vector/*.java`
-
- This example shows the use of Javassit for producing a class representing
- a vector of a given type at compile time.
-
- To run, type the commands:
-
- ```
- % javac sample/vector/*.java
- % java sample.preproc.Compiler sample/vector/Test.j
- % javac sample/vector/Test.java
- % java sample.vector.Test
- ```
-
- Note: `javassist.jar` is unnecessary to compile and execute
- `sample/vector/Test.java`.
- For more details, see
- `sample/vector/Test.j` and `sample/vector/VectorAssistant.java`.
-
- ### 6. `sample/rmi/*.java`
-
- This demonstrates the `javassist.rmi` package.
- To run, type the commands:
-
- ```
- % javac sample/rmi/*.java
- % java sample.rmi.Counter 5001
- ```
-
- The second line starts a web server listening to port 5001.
-
- Then, open sample/rmi/webdemo.html
- with a web browser running
- on the local host. (`webdemo.html` trys to fetch an applet from
- `http://localhost:5001/`, which is the web server we started above.)
-
- Otherwise, run `sample.rmi.CountApplet` as an application:
-
- ```
- % java javassist.web.Viewer localhost 5001 sample.rmi.CountApplet
- ```
-
- ### 7. `sample/evolve/*.java`
-
- This is a demonstration of the class evolution mechanism implemented
- with Javassist. This mechanism enables a Java program to reload an
- existing class file under some restriction.
-
- To run, type the commands:
-
- ```
- % javac sample/evolve/*.java
- % java sample.evolve.DemoLoader 5003
- ```
-
- The second line starts a class loader DemoLoader, which runs a web
- server DemoServer listening to port 5003.
-
- Then, open `http://localhost:5003/demo.html` with a web browser running
- on the local host.
- (Or, see sample/evolve/start.html.)
-
- ### 8. `sample/hotswap/*.java`
-
- This shows dynamic class reloading by the JPDA. It needs JDK 1.4 or later.
- To run, first type the following commands:
-
- ```
- % cd sample/hotswap
- % javac *.java
- % cd logging
- % javac *.java
- % cd ..
- ```
-
- If your Java is 1.4, then type:
-
- ```
- % java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 Test
- ```
-
- If you are using Java 5, then type:
-
- ```
- % java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 Test
- ```
-
- Note that the class path must include `JAVA_HOME/lib/tools.jar`.
|