Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #39785

Re: Load jar into classpath and access resources in it at runtime

From Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: Load jar into classpath and access resources in it at runtime
Date 2022-06-23 12:31 +0200
Organization A noiseless patient Spider
Message-ID <t91fet$jjk$1@dont-email.me> (permalink)
References <16f09c2d-e244-4ada-8e55-c1014fde20c1n@googlegroups.com>

Show all headers | View raw


On 21/06/2022 17:38, mike wrote:
> Hi,
> 
> I have created a jar file, test-example.jar, and added under src/test/resources
> and now I want to make sure that when I run the testcase
> this jar file is loaded so I can access files in it. I am using java 11.
> 
> Q1: How to load jar, in testcase, at runtime?
> Q2: How to access resource in jar. Resource resides in jar with the following path suites/tools/device/nc/testng2.xml
> 
> br,
> 
> //mike

Normally, what you put under /src is what you want packaged (in a JAR, 
WAR, etc.).
If you put a JAR there, and your sources are packaged as a JAR, you'll 
end up with JAR inside your JAR. Which I would say is definitely 
technically workable. I'm not sure whether it's a recommended practice 
or not.

To load such a JAR file, you'd have to load it as a resource
 
Thread.getThread().getContextClassLoader().getResource(NAME_OF_THE_JAR_FILE)

, then create a new ClassLoader for that resource -- which will be 
binary, so not a URLCLassLoader... Then load the resource/class you need 
from that classloader.

Perhaps instead of the above, one could simply create a URLClassLoader 
with a "classpath:/NAME_OF_THE_JAR_FILE" URL. I mention it in case, but 
IIRC the "classpath:/" resource prefix is something that Spring code 
brings, it's not out of the box. Not sure.

Alternatives to all of the above include:
- at or before build time, extracting the files you need from the JAR 
and putting them in your /src tree flat;
- putting the JAR file alongside your source tree (in a lib directory) 
and making sure it's added to the classpath when the runtime is 
launched, in which case you could access classes and resources from it 
as though they were in your /src tree.

-- 
  DF.

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Load jar into classpath and access resources in it at runtime mike <mikaelpetterson@hotmail.com> - 2022-06-21 08:38 -0700
  Re: Load jar into classpath and access resources in it at runtime Arne Vajhøj <arne@vajhoej.dk> - 2022-06-21 14:09 -0400
  Re: Load jar into classpath and access resources in it at runtime Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2022-06-23 12:31 +0200
    Re: Load jar into classpath and access resources in it at runtime "e.d.pro...@gmail.com" <e.d.programmer@gmail.com> - 2022-06-23 05:20 -0700
      Re: Load jar into classpath and access resources in it at runtime Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2022-06-23 15:33 +0200
        Re: Load jar into classpath and access resources in it at runtime "e.d.pro...@gmail.com" <e.d.programmer@gmail.com> - 2022-06-23 14:01 -0700

csiph-web