I am trying to read a Properties file in a maven nature project using the Properties.load(); I am specifying a path as a string ex. "./someFolder/file.properties",
but when I try to use my project as dependency in other projects I am forced to copy those files to the other project , simply because the "." means current directory.
Is there a way to specify a path so it will always be valid despite where I am calling it from ? ,
I have tried using the MyClass.class.getClassLoader().getResourceAsStream() but I am having trouble using it , it worked sometimes and failed other times.
Whats the best way to specify a path to read from class-path even if project was a jar
97 Views Asked by SaleemKhair At
2
There are 2 best solutions below
0
SaleemKhair
On
I noticed that my problem was that I had my properties files in the project path itself, and that the ClassLoader.getResource[AsStream](); looks is the target/classes folder, and that I didn't have the resources folder in my project.
I solved it my adding the resources folder to my build path and adding my files in the src/main/resources as the following src/main/resources/foo/bar.properties and loading it by SomeClass.class.getClassLoader().loadResourceAsStream("foo/bar.properties");.
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in MAVEN
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- JavaFX build generating a blank gui with primary view and secondary view buttons
- Maven (Java) does not build dependencies into a compiled file
- java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.TagLibraryValidator in Spring-boot jsp application
- I am trying to use h2 in-memory db from my spring boot application, my spring boot version is 3.1.10, but its not connecting to h2 properly
- BeanCreationException when deploying Spring Boot app
- How to run Parallel tests by groups using Maven and TestNG?
- Get control flow information with JaCoCo
- Failed to instantiate [com.docusign.esign.client.ApiClient]
- Gradle - Groovy vs Gradle - Kotlin vs Maven for Java Spring Boot web application project on IntelliJ
- Intelij ultimate and spring boot giving me errors
- Using Eclipse Maven project, import new version of a class from a jar file created from another Maven project
- Messing up with conflict between spring jcl and commons-logging.jar
- Run java program
- How to add a Maven project to an Ubuntu image in Docker
Related Questions in PROPERTIES
- The Selenium application properties folder holds two environment options. After running a test the environment setting changes to a previous setting
- Inconsistency in lazy variable initialization between static and instance properties in Swift
- How to convert from Java ASCII properties to UTF8 (Java 9) properties
- Conditional Property After Powershell Left Join
- Inheritance - is it possible to 'force' variable values relative to the derived class?
- How to use an imported Excel file inside Anylogic model
- TinyMCE custom toolbar button to set CSS property of selected text
- Missing Properties
- I am trying a display items (events) from db typescript nestjs using handlebars the events are an array of object. Properties of each object undefined
- How to transform a flat form-specific data-structure into a nested one?
- C# How do I Create and Reference Multiple Globally Accessible Objects?
- powershell array of object with dynamic properties outputs only properties from first element
- Swift protocol extensions and immutable properties
- Object property has different many string values
- I created a dice cube model using a tutorial and i would like to expoert the subdivision holes as properties to unity3d. how can i do it?
Related Questions in CLASSLOADER
- Unable to load Subject segmentation service of com.google.android.gms
- How to use your own Bouncy Castle version in an application deployed on JBoss EAP 7.4
- Loading Jar into classpath which is not defined in pom.xml
- Override classes present in Spring Boot fat jar with classes in external jar present in loader.path
- How to get SystemClassLoader URLs in JDK17 gracefully?
- Maven plugin: common dependency in plugin and project, create dependency class object in plugin from class in project
- Getting 404 when accessing classes annotated with @Path in {war}/WEB-INF/classes in Jetty 9
- Translet class loaded, but unable to create translet instance
- jvm classloading issue (defineClass1)
- How to dynamically load a jar in runtime (Not for reflection)
- TomEE - How does ClassLoader load from 3 webapps
- Spring boot jar loading
- how to load JPA Entities and Repositories in sprint boot app from external folder/jar
- loading constraint violation when resolving method "javax/imageio/metadata/IIOMetadata.getAsTree(Ljava/lang/String;)Lorg/w3c/dom/Node
- Generate custom java code like lombok at compile time
Related Questions in JAVA-IO
- Mocking Stream or Reader in Java Junit
- Cant find image file - java
- What directory do objects of the File() class look in?
- Not able to figure out why the following code is getting deadlocked
- java.io.FileNotFounfException:/images/captured.jpg: open failed:ENOENT
- Create CSV file without saving it to disk
- no suitable HttpMessageConverter found for response type [class java.io.InputStream] and content type [text/csv]
- ObjectInputStream constructor gives StreamCorruptedException: invalid stream header: EFBFBDEF
- Out of memory error java heap space using IOUtils.copyLarge . How can I fix this?
- Creating a file object only works when I use an absolute path
- When using a Java Scanner, is there ever a need to wrap the InputStream argument into an InputStreamReader? And then into a BufferedReader?
- how to solve the error below on android studio
- FileNotFoundException when trying to pass txt file as parameter for method in Java
- Code from target folder in java spring-boot
- java.io.UncheckedIOException / java.nio.file.AccessDeniedException mention different charsets when reading files in a directory
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
There are lots of misconceptions in your question.
No. When used inside a filesystem path (i.e. a path passed to the constructor of a File, or FileReader, or FileInputStream), "." means the current directory.
When used in a resource path (i.e. passed to
Class[Loader].getResource[AsStream]()), it's invalid.The trick is to carefully read the documentation.
getResourceAsStream()expects a/-separated path.When using
ClassLoader.getResource[AsStream](), this path always starts from the root of the classpath. So you would pass a path looking exactly like a fully qualified class name, except the dots would be replaced by slashes. So,com/foo/bar.propertieslooks for a resource namedbar.properties, in the packagecom.foo.When using
SomeClass.class.getResource[AsStream](), either the path starts with a/, and the path starts from the root of the classpath, or it doesn't, and it starts from the package of SomeClass. So, if SomeClass is in the packagecom.foo, using/com/foo/bar.propertiesis equivalent to usingbar.properties.It's hard to tell what you're doing wrong, since you're not providing any detail. But you really need to understand the difference between opening a file on the file system, and reading a resource loaded by the class loader. Sometimes, the resources just happen to be loaded by the class loader from the filesystem, because the classpath happens to contain directories, and not just jar files.