Z
zyng
Hi:
My Java program needs to access a text file(in fact, the Java code will use Linux System command "cp" to copy this text file to a destination folder during running). Suppose this is my Java program HelloWorld.java:
package aa.bb.cc;
public class HelloWorld
{
...
public static void main(final String[] args)
{
final URL myUrl = this.getClass().getClassLoader().getResource("namelist.txt");
final File nameFile = new File(myUrl.getPath());
if(windowlayoutFile.exists() == false)
{
System.out.println(nameFile.getAbsolutePath() + " does not exist!!!");
}
else
{
System.out.println(nameFile.getAbsolutePath() + " exists");
}
}
}
This is the directory and file structure in my file system:
/HOME/java_project/src/aa/bb/cc/HelloWorld.java
/HOME/java_project/build/aa/bb/cc/HelloWorld.class
/HOME/java_project/nonsrc/namelist.txt
In Eclipse, I have added nonsrc as "external class folder" and the code above works! The output is:
/HOME/java_project/nonsrc/windowlayout.xml exists
I am still not clear why use "external class folder", but it works in Eclipse.
Now, my problem is when creating an executable JAR file(helloworld.jar), my JAR content is(shown by the command "jar tf helloworld.jar"):
aa/bb/cc/HelloWorld.class
namelist.txt
Now, if i am at /HOME/test directory and the JAR file is here too:
java -jar helloworld.jar
This is the confusing output:
/HOME/test/file:/HOME/test/robot.jar!/namelist.txt does not exist!!!
The answers by Google just do not give me a clear whole picture of what is going on. (I don't want to put namelist.txt at the same package location as HelloWorld.java. I guess, if I do that, I maybe able to make it work by myself)
I am surprised by an exclamation shown in the file path too. I have never used the class URL in the past, which is used in my code now.
Thank you very much.
My Java program needs to access a text file(in fact, the Java code will use Linux System command "cp" to copy this text file to a destination folder during running). Suppose this is my Java program HelloWorld.java:
package aa.bb.cc;
public class HelloWorld
{
...
public static void main(final String[] args)
{
final URL myUrl = this.getClass().getClassLoader().getResource("namelist.txt");
final File nameFile = new File(myUrl.getPath());
if(windowlayoutFile.exists() == false)
{
System.out.println(nameFile.getAbsolutePath() + " does not exist!!!");
}
else
{
System.out.println(nameFile.getAbsolutePath() + " exists");
}
}
}
This is the directory and file structure in my file system:
/HOME/java_project/src/aa/bb/cc/HelloWorld.java
/HOME/java_project/build/aa/bb/cc/HelloWorld.class
/HOME/java_project/nonsrc/namelist.txt
In Eclipse, I have added nonsrc as "external class folder" and the code above works! The output is:
/HOME/java_project/nonsrc/windowlayout.xml exists
I am still not clear why use "external class folder", but it works in Eclipse.
Now, my problem is when creating an executable JAR file(helloworld.jar), my JAR content is(shown by the command "jar tf helloworld.jar"):
aa/bb/cc/HelloWorld.class
namelist.txt
Now, if i am at /HOME/test directory and the JAR file is here too:
java -jar helloworld.jar
This is the confusing output:
/HOME/test/file:/HOME/test/robot.jar!/namelist.txt does not exist!!!
The answers by Google just do not give me a clear whole picture of what is going on. (I don't want to put namelist.txt at the same package location as HelloWorld.java. I guess, if I do that, I maybe able to make it work by myself)
I am surprised by an exclamation shown in the file path too. I have never used the class URL in the past, which is used in my code now.
Thank you very much.