Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Latest release

Ever wanted to get rid of many files with many Java classes and copy just a single file into your project instead?

Not a typical desire for the standard Java developer, but quite helpful if dealing with more awkward toolchain like the conversion of applets for the JavaCard platform.

This simple tool takes multiple Java source files, extracts contained classes and inserts them as static subclasses into a single file. Makes inclusion of a target library (with multiple files) simpler by wrapping all classes into a single namespace and file.


java -jar JavaPresso.jar input_folder_path namespace_name compressed_file_version

Takes all *.java files from input_folder_path and inserts them as static subclasses into single file. One static attribute named version is created and set to compressed_file_version value. The implementation of classes is otherwise unchanged.

If you don't want to include all classes from an original package, simply delete corresponding files before running JavaPresso.


Assume existence of clasess A, B and C with the corresponding files, and located inside /src/mylibrary/ folder. Running command java -jar JavaPresso.jar /src/mylibrary presso will create single file with the following content:

package  mylibrary;
import ... // all imports from A,B and C collated together without duplicities

public class presso {
    // ... original head section of class A (license, authors...)
    static class A {
       // ... original implementation of class A
    // ...
    static class B {
       // ... original implementation of class B
    // ...
    static class C {
       // ... original implementation of class C

A single file can be now copied into your project directory. All classes are made available for use by typing import mylibrary.presso.*;


The common way how to keep project's src folder clean and well-arranged is to separate different functionality into multiple subfolders with the different package names. But such a structure makes it difficult to compile and convert all classes into single JavaCard executable (cap file). As a result, all on-card files with classes are put under the single package name and thus also into the same folder, making it quickly chaotic. The JavaPresso tool converts whole library you like to include into a single file and also simplifies its import in applet's code.


Code is licensed under permissive MIT license.


Automatically compresses multiple Java classes into a single source code file







No packages published