Being able to distribute your app via webstart is one of the very very
many reasons why "I'll just dump my resources in the application's own
directory" model is a bad one. It also completely breaks the mold on
e.g. linux, where apps just don't have home directories. The closest
simile to it (/usr/share/appname or /usr/local/share/appname) are only
writable by root, and are intended for read-only stuff.

Blaming javafx for this is silly.

On Aug 13, 3:47 am, jahid <[email protected]> wrote:
> Reinier,
>
> I see its as javafx faults, that's why I am blaming. I just can not
> understand that, being the developer, why I can not decide where I put
> my resources? Why I have to put my some specific directory (say as an
> example on user.home) to get hold of my installed directory. As long
> as runtime is there, rest of the thing should be upto the application,
> as it is from all other java application (ex. swing application). The
> developer decides where is the home directory of the application, and
> he keep all his res/db/properties on that location. And its for swing
> application, and javafx is not doing that, then why it can not be a
> fault of javafx. I looked many many forums and discussion, all of them
> are saying the same thing. Now if you do not want to accept that's
> javafx fault, then don't. But being the developer I see it as fault,
> and loading the location from other location is a "workaround".
>
> >It's not javafx that runs stuff in a sandbox, it's webstart. Which you
> >want to keep using.
>
> My bad, by javafx, i mean webstart in this case.
>
> >I suggest you read up on how to manage resources
> >together with webstart, and if you don't want to bother with that,
> >instead, read up on the various posts in this very thread about how
> >you can legally ship JavaFX libraries with your program.
>
> I have been searching forums for last 1 week. Its not only me who is
> having the problem, lots of other people are also having problem, and
> they are talking about that in the forums.
>
> >Or stop insisting on a home directory for your app, which doesn't even
> >make sense on e.g.
>
> I don't know why you say this. As long as you start the app with admin
> pass (ex. for ubuntu with sudo) you can decide any place where you
> want to put your app, and that place can be considered as your app's
> home dir. Look our app is a security app, where use will have their
> certificates and private keys. Loosing state of the app is loosing all
> his certificates and private keys which can't be retrieved. The main
> point I am making is, all other java app gave that flexibility of
> installing app any place you want, and run it from there as long as
> jvm is accessible. And this is the whole point I am and all other
> people who are talking in different forums are making. Indeed javafx
> is a nice technology, but still these is not solved yet.
>
> On Aug 13, 2:04 am, Reinier Zwitserloot <[email protected]> wrote:
>
>
>
> > Of course the RCP runs on the JVM. I have no idea why you think it
> > doesn't. Netbeans on windows is an exe because there's no such thing
> > as bash on windows. Nevertheless, it highlights the point: It's an
> > exe, not a jar.
>
> > It's not javafx that runs stuff in a sandbox, it's webstart. Which you
> > want to keep using. I suggest you read up on how to manage resources
> > together with webstart, and if you don't want to bother with that,
> > instead, read up on the various posts in this very thread about how
> > you can legally ship JavaFX libraries with your program.
>
> > Whatever you do, though, stop suggesting JavaFX is at fault here.
>
> > Or stop insisting on a home directory for your app, which doesn't even
> > make sense on e.g. linux. On windows, use AppData. On a mac, ~/Library/
> > Application Data. On linux, /usr/local/share/appname, or ~/.appname,
> > which is probably the best default in case you run into a somewhat
> > obscure OS, as they tend to be posixy, where ~/.appname is a decent
> > option.
>
> > You can keep insisting this makes your app vulnerable, but that
> > doesn't make it true.
>
> > On Aug 12, 5:32 pm, jahid <[email protected]> wrote:
>
> > > Eclipse uses their own RCP which does not run on jvm. So for them it
> > > can be different case then all other cases.
>
> > > On windows machine, both netbeans and idea are exe files, but not
> > > script.
>
> > > Also, I am not sure why you are so up to how the resources are loaded.
> > > Because the point I was trying to make is, JavaFx runs the application
> > > on sandbox, but not  on installed location. So, the application home
> > > is not present to the application when its running. That is why you
> > > can not refer to other folders of you application. For the running
> > > jars the MyClass.class.getResource(....) will always return the sand
> > > box location, because the jar is copied on sand box before execution.
>
> > > On Aug 12, 3:18 pm, Reinier Zwitserloot <[email protected]> wrote:
>
> > > > Netbeans, eclipse and friends use a custom executable to boot. My
> > > > eclipse for example, actually starts a mac os x native program. On
> > > > windows the same thing happens. Netbeans on my mac is a shell script
> > > > which uses some fancy bashisms to figure out where the file is (in
> > > > bash you can request your own location rather simply). All these tools
> > > > run before the JVM has even started, and thus the rule that you cannot
> > > > rely on your own jar's location don't apply.
>
> > > > On Aug 12, 4:48 am, jahid <[email protected]> wrote:
>
> > > > > > You're blaming a tool for your own mistakes. That's not fair.
>
> > > > > > If you insist on this somewhat odd distribution model (where you
> > > > > > somehow don't trust a user when you put files in his or her settings
> > > > > > dir), then perhaps this scheme will work:
>
> > > > > I deny that its my mistake, but I am following what is the trend, and
> > > > > not to teach end user a new lesson about not to delete folders from
> > > > > his home directory. I want user to use my application as like any
> > > > > other application, but not to download, or learn too many things (and
> > > > > remember them) for my software. Because that will push them away from
> > > > > my software.
>
> > > > > > You have a custom installer. Make this installer write into the app
> > > > > > jar file a text file, probably in META-INF someplace, listing the
> > > > > > actual installation location. You can then read this out (via
> > > > > > Class.getResource) during system start, and then boot up derby,
> > > > > > pointing it at this location.
>
> > > > > I already thought about it, but we can not do that. Doing that will
> > > > > mess up the jar signature, and webstart will not run the app coz the
> > > > > checksum will not match, since the jar is modified.
>
> > > > > > General piece of advice: Relying on either of the following two 
> > > > > > things
> > > > > > is *NEVER* a good idea. Ever. Don't write code that does this.
>
> > > > > >  1. The current directory.
> > > > > >  2. Using the resource URL hack to determine the location of your 
> > > > > > jar
> > > > > > file*.
>
> > > > > > Java's class loading model and file model are fundamentally not
> > > > > > designed to accomodate whatever you'd want to do with either piece 
> > > > > > of
> > > > > > information. You *CAN* use the current directory for shell-like 
> > > > > > tools,
> > > > > > of course. Just as long as you don't attempt to use it to load
> > > > > > resources.
>
> > > > > > *) This is where you use MyClass.class.getResource("/" +
> > > > > > MyClass.class.getName().replace(".", "/") + ".class) to get a URL,
> > > > > > then toString this, strip off the file:/// at the start and the 
> > > > > > '!/com/
> > > > > > package/MyClass.class' part, which leaves you the absolute path to
> > > > > > your own jar file.
>
> > > > > I am trying to figure out what you mean by this part of your post. How
> > > > > all other software are loading their resources? I just looked into the
> > > > > NetBeans and IntelliJ IDEA after read your post. There are config
> > > > > files as xml files which is used by each of these IDE. How they load
> > > > > those (without current directory, or resource loading)? And why they
> > > > > fail to load the app if I take away those files? By the way, those are
> > > > > two Java based application I have installed on my computer. So can't
> > > > > look into more those two software.

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to