Development

General Information for Developers

The code is available under a GPL license using Git from SourceForge and is compiled using Gradle.

The code base for this project started over 20 years ago.  If some things in this project look dated, its because they are.

Back before there was GitHub, there was SourceForge.  SourceForge was the GitHub of the day, so that’s where I put this project.  Back then Subversion (SVN) was the cool version control system and that’s what I used back then.  SourceForge did eventually bring Git into the fold so I eventually ported over to Git.  After doing that I deleted the Subversion repository.  So you won’t see the entire history in Git.

Development Environment

These instructions are how I set up my development environment.  They are actually on-line because I usually could not find them when I needed them.  And I often forgot to write down all the steps so I couldn’t remember how to do the steps. Way back in the days before Eclipse and Maven and Gradle and GitHub it used to be much harder to assemble things.  It’s way easier now, but I’m still awfully forgetful.  So here is my cheat sheet on how to set up my development laptop.

  1. Install the Java JDK.  I usually use the latest OpenJDK from https://adoptopenjdk.net/. I am currently using currently OpenJDK 13.0.1 with the HotSpot JVM.
  2. Install Cygwin
    • OK, I use Windows because its just easier with the Microsoft Office apps for work and all the home stuff. But I’m still a Linux geek at heart.  
    • I instal at C:\cygwin64
    • I put C:\cygwin64\bin on my path (found under Windows Environment Variables). That way I can use my favorite Linux commands from the Windows DOS window/Command Prompt.
    • And, I’m so old I like the old green text on black like I grew up with.  So I set my Windows DOS window/Command Prompt to have green text in the foreground.  Oh, I just love a good command line!!
  3. Install Gradle
    • I unzipped to: C:\dev\gradle-6.0.1
      I used the “all” bundle to get the documentation, but then just Googled everything so it didn’t really matter.  You know, this newfangled Internet is pretty cool!!  I started with a 300 baud modem and punch cards, so I love watching Gradle pull down like a gazillion libraries.  
  4. Install Eclipse
    • Currently using Eclipse IDE 2019-12. Just the plain old Java development version.
    • I install at: C:\dev\eclipse
  5. Add JavaFX tooling support to Eclipse
    • I use: e(fx)clipse
    • On the Eclipse install page (Help –> Install New Software, I used the find your extension and select e(fx)clipse installation option.
  6. Download, install and hook Scene Builder into Eclipse.
    • JavaFX Scene Builder is now maintained by Gluon.
    • When you next open a *.fxml file, you have to select “open with” then “other…”. You then navigate to where SceneBuilder.exe is installed and select it. Be sure to check the checkbox for “always open *.fxml with this”.
  7. Create a local Git repository.
    • From Eclipse, File -> New -> Other -> Git -> Git Repository
    • I put the repository at: C:\Users\Gerhard\Git
  8. Clone the jibs-jrat repository.
    • From Eclipse change to the Git perspective and select “clone”. (Actual steps may vary.)
    • Clone URL: ssh://gerhardb@git.code.sf.net/p/img-browse-sort/jibs-jrat
    • I cloned to: C:\Users\Gerhard\Git\jibs-jrat
      Note that SourceForge instructions actually gave me a URL that did not work. At least not in Eclipse. I had to remove img-browse-sort-jibs-jrat after the space at the end to get the supplied URL to work.
  9. Create Eclipse classpath using Gradle
    • From the C:\Users\Gerhard\Git\jibs-jrat directory run: gradle eclipseClasspath
    • This will cause all the needed dependencies to be downloaded into the Gradle repository. It will also create the .classpath Eclipse needs to finish understanding the project. After this is done, use F5 to refresh Eclipse files and Eclipse should compile itself and show no issues. Note that I don’t have Gradle on my path. I run this script to set up my Gradle environment: build.bat
  10. Fix the created classpaths in Eclipse
    • The Java modules are not working perfectly yet. So I get this error:
      “The package javax.xml.parsers is accessible from more than one module: , java.xml” Explanation here.
    • In java build path/libraries delete everything from woodstox to xz. I determined this through experimentation.
    • You may also need to adjust classpaths to point to other Eclipse projects.
  11. Apply Eclipse formatting conventions
    • OK, this is my style so you might not want to use.
    • Here is the location of the format file: C:\Users\Gerhard\Git\jibs-jrat\jibs\eclipseFormatting.xml
  12. Adjust the compiler warnings
    • Preferences –> Java –> Compiler –> Errors/Warnings
    • I turn on all warnings except for:
      • Code Style: Non-externalized strings (missing/unused $NON-LNS$ tag) –> I started to internationalize but it really messes up the code and I never got volunteers to translate anything so I have up on the idea.
      • Unnecessary Code: Value of exception parameter is not used –> warning would be shown if you don’t use the parameter in a catch block of an exception.
  13. At this point you should be able to get a clean compile in Eclipse.
  14. Do a full build to create an “uberJar” which can be run on any machine just by double-clicking on it (provided, of course, that you have the correct version of Java on your path).
    • From the C:\Users\Gerhard\Git\jibs-jrat directory run:
    • gradle createImage
    • then run: gradle uberJar
    • That will put JIBS.jar at:
    • C:\Users\Gerhard\Git\jibs-jrat\jibs\build\deliver
    • And also for diskUsage, JRAT, and tileGame
  15. Create a Windows exe file
    • I am currently using JPackage to create an exe file. JPackage was available at: https://jdk.java.net/jpackage/ However, it is now being incorporated back into Java and will be available with Java 14.

JRAT Database

JRAT uses Apache Derby as it’s SQL database.  

Here is the database schema: