Have a Question?
< All Topics
Print

BBJ 24+ JAR DIRECTORY CHANGE

What Changed?

In BBj version 24 and above jars will be installed under a new <bbj install>/.lib (note the dot) directory instead of the <bbj install>/lib directory.    

Why Was This Changed?

Java 21 no longer supports the use of index jars, see JDK-8302819 for more information.

In previous BBj versions index jars were used in the BBj Java classpaths and Sessions Specific Classpaths (SSCP) to reference the necessary JARs. This allowed for shorter classpaths that referenced just the index JARs to be used instead of specifying each needed JAR (over 250).  
 

BBj Internal Changes

In BBj 24, BASIS removed the use of index jars and consolidated jar directories in order to run with Java 21. This BBj version (and above) allows a directory to be specified in a classpath including using a wildcard (*) to reference all jars in the folder.  The following classpaths have been changed: 

 

bbj_internal
      New:
              <bbj install>/.lib/*
              <bbj install>/.lib/utils/* 
              <bbj install>/.lib/netty/* 
              <bbj install>/.lib/jetty/* 
      Previous:
               <bbj install>/lib/BBjStartup.jar
               <bbj install>/lib/BBjIndex.jar
               <bbj install>/lib/BBjExtIndex.jar
               <bbj install>/lib/basisfonts.jar
               <bbj install>/lib/BBjThinClient.jar
               <bbj install>/lib/BBjUtil.jar
               <bbj install>/lib/BasisInstall.jar
               <bbj install>/lib/GAppsV3Index.jar
basisdemos_internal
      New:
               {bbj_internal}
               <bbj install>/.lib/demos/*
      Previous:
               {bbj_internal}
               <bbj install>/demos/Jars/YahooFinanceAPI-2.3.0.jar
               <bbj install>/demos/Jars/opencsv-3.7.jar
               <bbj install>/demos/Fonts/demofonts.jar
               <bbj install>/demos/Jars/demoslaunchdockClientFiles.jar

User Impact

BASIS will no longer install or update any third-party JARs in the <bbj install>/lib folder, and end users will now be responsible for managing and maintaining any JARs located there for their own purposes. This gives end users control over the specific version they use of every third-party JAR they rely on, without conflicting with any versions used by BASIS.

End users will notice that all of the third-party JARs that BBj uses are now installed into one of the following directories:

<bbj install>/.lib – Jars necessary to run BBj

<bbj install>/.lib/utils – Jars necessary to run BBj utilities

<bbj install>/.lib/demos – Jars necessary to run BBj demos

<bbj install>/.lib/jetty – Jars necessary run the Jetty web server

<bbj install>/.lib/netty – Jars necessary for client/server communication

<bbj install>/.lib/lucene5 – Jars necessary to use Lucene version 5 indexing 

<bbj install>/.lib/lucene7 – Jars necessary to use Lucene version 7 indexing

Administrators will see the aforementioned basis_internal and basisdemos_internal classpath displayed fully expanded (instead of just showing the wildcard) in EM > BBjServices > Java Settings, in the Classpath tab.

Going Forward

BASIS is intentionally installing JARs under the new <bbj install>/.lib directory to indicate to users that this is a “hidden” folder. This folder should not be used for housing JARs needed for user applications as the previous <bbj install>/lib directory might have been. When a new BBj version is installed, the new <bbj install>/.lib directory is removed and only the BBj JARs for that version are loaded, and wildcards (*) are used for the classpaths. Any directory outside the <bbj install>./lib directory can safely be used to store custom application JARs.

Users that install over the top of an existing installation when upgrading BBj will notice that the installer does NOT remove any existing JARs stored in the <bbj install>/lib directory. BASIS recommends performing an uninstall before upgrading to BBj 24 or higher so that most BBj-supplied JARs are removed by this process. BASIS also recommends removing the <bbj install>/lib directory when BBj applications are not using any custom JARs from this directory. Otherwise, it will be up to the user to remove JARs that their application is not using from the <bbj install>/lib directory to free up disk space.  

 

BASIS’ “future-proofing” approach to new product releases provides a low-risk path to an upgrade process. To this end, outside the optional recommendations made in this article, this JAR directory change will not have any impact on functionality or on end users installing BBj.

 

Tags:
Table of Contents
Scroll to Top