#!/bin/bash # Launch j3270 - Java TN3270 Terminal Emulator # Usage: ./run.sh [host] [port] [model] # Example: ./run.sh mainframe.example.com 23 4 JAVA_DIR="$(cd "$(dirname "$0")" && pwd)" BUILD_DIR="$JAVA_DIR/build" # Always rebuild to pick up changes echo "Building lib3270j..." rm -rf "$BUILD_DIR" mkdir -p "$BUILD_DIR/lib3270j" "$BUILD_DIR/j3270" # Compile libraries find "$JAVA_DIR/lib3270j/src" -name "*.java" -print0 | xargs -0 javac -d "$BUILD_DIR/lib3270j" echo "Building j3270..." find "$JAVA_DIR/j3270/src" -name "*.java" -print0 | xargs -0 javac -cp "$BUILD_DIR/lib3270j" -d "$BUILD_DIR/j3270" echo "Build complete." # --------------------------------------------------------- # NEW: Package the shareable JAR # --------------------------------------------------------- echo "Packaging j3270.jar..." # 1. Create the Manifest file indicating the entry point # Note: The manifest file must end with a new line or carriage return echo "Main-Class: org.pubvm.j3270.J3270App" > "$BUILD_DIR/MANIFEST.MF" echo "" >> "$BUILD_DIR/MANIFEST.MF" # 2. Build the JAR using both compiled directories jar cvfm "$BUILD_DIR/j3270.jar" "$BUILD_DIR/MANIFEST.MF" \ -C "$BUILD_DIR/lib3270j" . \ -C "$BUILD_DIR/j3270" . echo "Executable JAR created at: $BUILD_DIR/j3270.jar" # --------------------------------------------------------- # Run the newly packaged JAR # --------------------------------------------------------- exec java -Dapple.laf.useScreenMenuBar=true \ -Dapple.awt.application.name=j3270 \ -jar "$BUILD_DIR/j3270.jar" "$@"