[
https://issues.apache.org/jira/browse/FELIX-3095?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13094573#comment-13094573
]
Richard S. Hall commented on FELIX-3095:
----------------------------------------
Ok, I've figured out what is going on. Your process sets the user.dir system
property before running your WAR file and that causes the confusion. For
example, I created this simple example to demonstrate:
package file;
import java.io.File;
public class FileTest {
public static void main(String[] args) {
System.setProperty("user.dir", args[0]);
File file = new File(args[1]);
System.out.println(file + " " + file.exists());
System.out.println(file.getAbsoluteFile() + " " +
file.getAbsoluteFile().exists());
}
}
This program takes two arguments. One is a path to set the user.dir property to
and the other is a relative file name that exists in that directory. For
example, if I run this from /Users/rickhall/ then this is what I get:
java -cp . file.FileTest /Users/rickhall/tmp foo.txt
foo.txt false
/Users/rickhall/tmp/foo.txt true
So, it seems to me, that setting user.dir in process is not the same as having
it set when the JVM starts. It is probably a bad assumption to rely on the fact
that the user.dir is correct any way. You are probably safer calculating the
absolute path yourself and constructing the reference: URL accordingly.
> FELIX running in embedded mode the File().exits() is false and the
> File().getAbsoluteFile().exists() is true
> ------------------------------------------------------------------------------------------------------------
>
> Key: FELIX-3095
> URL: https://issues.apache.org/jira/browse/FELIX-3095
> Project: Felix
> Issue Type: Bug
> Components: Framework
> Affects Versions: framework-3.2.2
> Environment: Windows 7 32bit and 64bit: JVM 1.6.0_21
> OSX : JVM 1.6.0_26
> Running embedded Felix with Jetty 6.x 7.x and JBoss 4.2, 5.X
> Reporter: Laszlo Hordos
> Attachments: Screen shot 2011-08-31.png
>
>
> I have the following code in the config.properties
> felix.auto.start.1 = \
> reference:file:bundle/init/openidm-system.jar \
> When the framework tries to find the bundle the
> org.apache.felix.framework.cache.createRevisionFromLocation(..) line:840
> calls the org.apache.felix.framework.util.fileExists(..) and I double checked
> the file is there but the code did not find it.
> I noticed if I create a watch in the debugger the file.exists() it returns
> false. If I change the watch to file.getAbsoluteFile().exists() it returns
> true.
> I change the code everywhere to get the getAbsoluteFile always to be safe but
> this "bug" is in the Felix. I have an issue to deploy and run the OpenIDM
> within an embedded deployment. The code is published
> svn co https://svn.forgerock.org/openidm/trunk/openidm-webapp/ openidm-webapp
> cd openidm-webapp
> mvn jetty:run-war
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira