Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to configure additional classpath in SpringBoot?

Tags:

I want to make a standalone web application. I have some problems with SpringBoot.

My application is one jar file from SpringBoot.

But my application was usually needed jdbc driver jar. I want to exclude the jdbc driver jar for my application and read the library jar from the lib folder.

But SpringBoot lib folder is BOOT-INF/lib is final static. So, I want to add external classpath (lib) for the jdbc driver jar.

How to configure additional classpath in SpringBoot. Is it available?

like image 535
fightingmamoru Avatar asked Nov 09 '16 02:11

fightingmamoru


People also ask

Where is the classpath in spring boot?

In the Spring Boot's docs here, about serving static content, it says: By default Spring Boot will serve static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath. and all will work fine and I'm happy since I can have my static content under the src directory.


2 Answers

You may refer this below link from spring boot:

https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html#executable-jar-property-launcher-features

You can use the loader.path property to define a lib folder location

like image 28
mhasan Avatar answered Oct 11 '22 08:10

mhasan


You can use the loader.path parameter to define a location for an external lib folder. All jars under this folder will be added to the classpath. For example, if you'd like to define C:\extLib as your external lib folder, you can do the following:

java -Dloader.path=/C:/extLib/ -jar aapName.jar 

For this to work, you need to use the PropertiesLauncher. There are two ways to do that:

Option 1

Update the project pom.xml and add the following tag:

<configuration>  <!-- added -->   <layout>ZIP</layout> <!-- to use PropertiesLauncher --> </configuration 

Effective build tag, the post-update looks like below:

<build>      <plugins>         <plugin>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-maven-plugin</artifactId>             <configuration>  <!-- added -->                 <layout>ZIP</layout> <!-- to use PropertiesLauncher -->             </configuration>         </plugin>     </plugins> </build> 

Option 2

Use the PropertiesLauncher when launching the application from the commandline:

java -cp aapName.jar -Dloader.path=/C:/extLib/ org.springframework.boot.loader.PropertiesLauncher 

References:
How to add jars to SpringBoot classpath with jarlauncher

like image 123
giftednewbie Avatar answered Oct 11 '22 07:10

giftednewbie