Help with writing to the JWS cache directory?

We have a java application named "foo" that we would like to deploy via Webstart. The original version of foo is packaged into a single foo.jar archive. Foo creates a textfile "info.txt" outside of foo.jar. "Info.txt" stores information that we would like to remain constant for each client machine, which is why we are not wrapping this info inside foo.jar b/c "foo.jar" is overwritten each time a new version is available on the server.
When running "java -jar foo.jar" outside of Webstart, foo works correctly and generates "info.txt" in the same directory where foo.jar is located. The current directory is determined by this code snippet--
File infoFile = new File ( "info.txt");
However, when we deploy "foo.jar" through Webstart, foo fails to work properly on the client machine b/c it is unable to write "info.txt" in the directory where "foo.jar" has been downloaded and cached. Note that we have signed foo.jar properly and it is allowed to write to the local filesystem. But instead of generating "info.txt" in the same location as "foo.jar", it creates "info.txt" on the client desktop causing problems with the running application.
Can anyone tell us how to capture the client's cache directory location during Webstart download so that "info.txt" can be created and placed in that directory?

you can find the path to the cache directory by getting a jar url to one of your resources in the cache:
URL jarURL = this.getClass().getClassLoader().getResource("MyClass.class");
String jarFileStr = jarURL.getFile();
1.) first remove the "!/MyClass.class":
jarFileStr = jarFileStr.substring(0, jarFileStr.length() - "!/MyClass.class".length());
2.) then remove the jar://file: in front:
if (jarFileStr.startsWith("jar://file:") { jarFileStr = jarFileStr.substr(11); }
3.) may need to transform %20 to spaces, and forward slashes to File.seperator
jarFileStr.replace("%20", " ");
This gives me a string value of:
file:C:/Documents%20and%20Settings/glyn/.javaws/cache/http/Dgwwinxp/P80/DMlive/DMjava/RMBBClient.jar
When I try to do:
File jarFile = new File(jarFileStr);
JarFile jar = new JarFile(jarFile);
I get java.util.zip.ZipException: The filename, directory name, or volume label syntax is incorrect.
Has anyone got this method of getting the jar file to work?
Thanks
Glyn
Re: Java Web Start getResource() issue
Author: dietz333
In Reply To: Re: Java Web Start getResource() issue      Sep 29, 2003 10:18 AM
Reply 5 of 8
Glenn:
the string - file:C:/Documents%20and%20Settings/glyn/... is not legal path.
1.) first you need to strip off the "file:"
2.) you need to change the '/' to '\' (on windows).
use str.replaceAll("/", File.separator)
/dietz
Re: Java Web Start getResource() issue
Author: gdub
In Reply To: Re: Java Web Start getResource() issue      Sep 30, 2003 9:29 AM
Reply 6 of 8
Thanks for the reply.
I changed the line to
jarFileStr = jarFileStr.substring("file:".length(), jarFileStr.length() - "!/com/xxxx".length());
File file = new File(jarFileStr);
The System.out of file is
C:\Documents%20and%20Settings\glyn\.javaws\cache\http\Dgwwinxp\P80\DMlive\DMjava\RMMyApp.jar but isExists() returns false on the file.
I guess it doesn't like the %20 etc. because that it the path to the file alright..
Re: Java Web Start getResource() issue
Author: gdub
In Reply To: Re: Java Web Start getResource() issue      Sep 30, 2003 9:33 AM
Reply 7 of 8
This works:
jarFileStr = jarFileStr.substring("file:".length(), jarFileStr.length() - "!/com/xxxx".length());
jarFileStr.replaceAll("%20", " ");
File file = new File(jarFileStr);
Not very pretty. But it will do me for now.
Thanks for your help.
Re: Java Web Start getResource() issue
Author: josephconder
In Reply To: Re: Java Web Start getResource() issue      Oct 3, 2003 1:43 PM
Reply 8 of 8
I ran into this problem as well. The string is URL encoded (hence the %20=space).
You could use URLDecoder.decode(jarFileStr) to get the same result (and not worry about any other encoded characters).

Similar Messages

  • Help with writing .bashrc file

    I would like help with writing a .bashrc file.
    The only thing I want right now is colored output and slashes for directories like what "ls -GF" does -- for each new terminal window.
    Can you guys give me a hand?
    Running Mac OS 10.4.6. Bash is default shell.
    Thanks.

    Hi Paul,
       You can get Apple's "ls" command to always output color with the following in your .bashrc:
    export CLICOLOR=""
    You can have an effect on the colors used with settings like the following:
    export LSCOLORS="gxfxcxdxbxegedabafacad"
       I have a color prompt in my bash startup scripts, bashrc.tgz. If you unpack the tarball in the root of your home directory, the files will be put in a ~/Library/init/bash directory. The file named "prompt" sets the color prompt string.
    Gary
    ~~~~
       I know you think you thought you knew what you
       thought I said, but I'm not sure you understood what
       you thought I meant.

  • Help with writing and retrieving data from a table field with type "LCHR"

    Hi Experts,
    I need help with writing and reading data from a database table field which has a type of "LCHR". I have given an example of the original code but don't know what to change it to in order to fix it and still read in the original data that's stored in the LCHR field.
    Basically we have two Function modules, one that saves list data to a database table and one that reads in this data. Both Function modules have an identicle table which has an array of fields from type INT4, CHAR, and type P. The INT4 field is the first one.
    Incidentally this worked in the 4.7 non-unicode system but is now dumping in the new ECC6 Unicode system.
    Thanks in advance,
    C
    SAVING THE LIST DATA TO DB
    DATA: L_WA(800).
    LOOP AT T_TAB into L_WA.
    ZDBTAB-DATALEN = STRLEN( L_WA ).
    MOVE: L_WA to ZDBTAB-RAWDATA.
    ZDBTAB-LINENUM = SY-TABIX.
    INSERT ZDBTAB.
    READING THE DATA FROM DB
    DATA: BEGIN OF T_DATA,
                 SEQNR type ZDBTAB-LINENUM,
                 DATA type ZDBTAB-RAWDATA,
               END OF T_TAB.
    Select the data.
    SELECT linenum rawdata from ZDBTAB into table T_DATA
         WHERE repid = w_repname
         AND rundate = w_rundate
         ORDER BY linenum.
    Populate calling Internal Table.
    LOOP AT T-DATA.
    APPEND T_DATA to T_TAB.
    ENDLOOP.

    Hi Anuj,
    The unicode flag is active.
    When I run our report and then to try and save the list data a dump is happening at the following point
    LOOP AT T_TAB into L_WA.
    As I say, T_TAB consists of different fields and field types whereas L_WA is CHAR 800. The dump mentions UC_OBJECTS_NOT_CONVERTIBLE
    When I try to load a saved list the dump is happening at the following point
    APPEND T_DATA-RAWDATA to T_TAB.
    T_DATA-RAWDATA is type LCHR and T_TAB consists of different fields and field types.
    In both examples the dumps mention UC_OBJECTS_NOT_CONVERTIBLE
    Regards
    C

  • Help with writing a formula

    Hi all,
    I am creating a report, and need help with writing a formula...
    I am creating a report that shows how many visits/touches our reps have made to various grade accounts. It is broken down by calendar week, and I currently have a weekly "goal" number set that the reps have to meet. That "goal" number increases each week to keep a running total. (example: week 1: 7, week 2: 14, week 3: 21)
    I have created some different formulas and one is this:
    SUM("Activity Metrics"."# of Activities" BY Date."Calendar Week")
    What this shows me is how many "visits" there are per calendar week to customers, however it show me the total for all reps per week.
    What I need is that total to show, but totaled for each rep individually.
    What I was trying is this:
    SUM("Activity Metrics"."# of Activities" BY Date."Calendar Week") BY Employee."Employee Name"
    But...I keep getting an error.
    Any suggestions?
    I have the reporting book by Lairson, and have been referring to it...but my brain at this point is fried.
    Thanks in advance for any help...(please forgive...I am new to OnDemand, and I am sure this is easy)

    Thanks for helping!
    I created this formula as a column: SUM ("Activity Metrics"."# of Activities" BY Date."Calendar Week"), it is called "total number of visits per week" and it shows the totaled number of visits that all the reps have done per calendar week. For example: Week 1: 10 visits, Week 2: 37 visits, Week 3: 20 visits.
    What I would like to do is take that column and break it down further, to show instead how many visits per week by sales rep there have been
    So what I was trying was to take the "total number of visits per week" (SUM ("Activity Metrics"."# of Activities" BY Date."Calendar Week")) and use "Activity Owner" (Employee."Employee Name") to break it down further.
    What I need to use is the total number of visits each rep has per calendar week.
    I think I am getting the error because you can't use "BY" twice in a formula?

  • Need some help with putting a folder in users directory

    I'm not sure how to do this, but what I want to do is put this file in C:/My Documents, but I need to be able to verify that C://My Documents exists, if not put it in C:/Program Files.
    Can any one help me out?
    try {
                        String[] contactArray = parseDatFile(fc.getSelectedFile());
                        Document document = createXMLDocument(contactArray);
                        saveToXMLFile(
                        document,
                        new File(
                        "C:/Program Files/xxx/",// looks for directory for list
                        "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"));
                    } catch (Exception exc) {
                        File f = new File("C:/Program Files/xxx/");// setting directory for list if not there
                        boolean yes = true;
                        yes = f.mkdir();// creating directory
                        try {
                            String[] contactArray = parseDatFile(fc.getSelectedFile());
                            Document document = createXMLDocument(contactArray);
                            saveToXMLFile(
                            document,
                            new File(
                            "C:/Program Files/xxx/",// used only if the directory didn't exist
                            "xxxxxxxxxxxxxxxxxxxxxxx"));

    Need some help with putting a folder in users directoryI recomend using System.getProperty( "user.home" ) not a hard-coded value.
    This will use the users home folder ( C:\My Documents ) on Win9X (I guess), C:\Documents and Settings\<current user> on Win2K +, and ~ on Unix-a-likes.

  • Changing the JWS Cache Folder

    hi folks,
    I have a question: is there any way to change the JWS Cache Folder (and launch the application offline)?
    I've heard about a file called javaws.cfg, but as far as I understood this file is no longer used in JREs neewer than 1.4.2.
    let me explain my problem: I want to distribute (is deploy the right word?) a desktop application (I've already putted the pictures and jaspers inside the .jar), but i need to use an external config file to store the address of the server (just the ip of the postgres server with the database)...
    can I use JWS to make something like this:
    +C:\MY_APP\
    - MY_APP.jar
    - MY_APP.ini
    so the user are also able to run the aplication from a desktop shortcut (to MY_APP.jar)?
    thanks in advance and sorry about my bad english!

    mendonca_ime wrote:
    ..is there any way to change the JWS Cache Folder...?The end user or their system administrator can move the location of the cache. It is no business of JWS apps. to either move it or know the location.
    ...I want to distribute (is deploy the right word?) a desktop application (I've already putted the pictures and jaspers inside the .jar), but i need to use an external config file to store the address of the server...An external file is not necessary for that. Supply a default file within a Jar. If the user changes the location, store it using the PersistenceService. Here is a small [demo of the PersistenceService|http://pscode.org/jws/api.html#ps] *(<- link).*

  • I had to put my computer by together without migration or time machine I NEED help with order of the files?

    I had to put my computer by together without migration or time machine I NEED help with order of the files?

    Hi, where are these other files exactly?

  • Hi. I have an iPhone 4s. The music doesn't play when I connect it to my car stereo. It used to play previously but stopped playing all of a sudden. My phone is getting charged when I cut it to the USB port. Please help with this. The iOS is 6.1.3.

    Hi. I have an iPhone 4s. The music doesn't play when I connect it to my car stereo. It used to play previously but stopped playing all of a sudden. My phone is getting charged when I cut it to the USB port. Please help with this. The iOS is 6.1.3.

    Hello Priyanks,
    I found an article with steps you can take to troubleshoot issues with an iPhone not connecting to your car stereo:
    iOS: Troubleshooting car stereo connections
    http://support.apple.com/kb/TS3581
    Thank you for using Apple Support Communities.
    Best,
    Sheila M.

  • Please i need help with switch from the us store to malaysian store how i can switch

    Please i need help with switch from the us store to malaysian store how i can switch

    Click here and follow the instructions to change the iTunes Store country.
    (82303)

  • Please help with writing a class

    i need help getting started with this assignment. i haven't done anything with writing classes, so i don't know where to start.
    i need to create a bank account class that will keep a name, balance, up to 50 deposits, and up to 50 withdrawls. i need to include 2 arrays for the deposits and withdrawls.
    Here's what i know:
    I need a constructor that takes zero arguments. This constructor would initialize the numeric value to zero.
    I need a 2nd constructor that takes one argument, a name as a String value. This constructor would initialize the numeric value to zero.
    I need a 3rd constructor that takes two arguments, a name as a String value and a starting "balance" as a double value

    Sorry, I was watching a movie with my wife ...imagine that. Study my examples here and try to understand what I have done. You will follow the same methodology for the rest of the program. Use main to test the methods in your program.
    public class mdlAccount {
      String name;
      double balance;
      int currentDeposit = 0;
      int currentWithdrawl = 0;
      double[] deposits = new double[50];
      double[] withdrawals = new double[50];
      public mdlAccount() {
        name = "";
        balance = 0.0;
      public mdlAccount(String name) {
        this.name = name;
        balance = 0.0;
      public mdlAccount(String name, double balance) {
        this.name = name;
        this.balance = balance;
      // When the instructor says: Have a method that does deposits...
      // You need to create a method, similar to the constructors,
      // but with a return value, even if it returns void (nothing).
      // Like this:
      public void deposit( double amount ) {
        // Do some error checking.
        if ( currentDeposit < 50 && amount > 0 ) { // > is a greater than sign
          // If all is ok, add to the balance...
          balance += amount;
          // and add the entry to the array of deposits
          deposits[currentDeposit] = amount;
          // Finally, add 1 to the currentDeposit variable.
          currentDeposit++;
      // We need the 'return the balance' method so we can see if
      // the program runs correctly. This time we return a double,
      // instead of void. (void means don't return anything at all).
      public double getBalance() {
        return balance;
    // Now you create the next method for withdrawals...
    //  if ( currentWithdrawl < 50 ) {
    //    deposits[currentWithdrawl] = amount;
    //    currentWithdrawl++;
      // You want a main method so this class can be executed.
      // You can remove it later if you want to use this class
      // from within another larger program.
      public static void main(String[] args) {
        mdlAccount acct = new mdlAccount( "GumB", 100.0 );
        System.out.println("Initial balance is " + acct.getBalance());
        acct.deposit( 50.0 );
        System.out.println("Current balance is " + acct.getBalance());

  • Help with form sending the data to email

    I have looked all over the Internet for help with this.  I have tried numerous video tutorials and for some reason I can't get it to work.  I have created a form in flash cs4 AS2.  It is a contact information form where the user fills out their information and sends it.  I have created a the form in a movie clip (I have also tried it not in a movie clip) with the form components inside that movie clip.  I have given each component on the form an instance name.
    The form has:
    Full name (with instance name=name)
    Company (with IN =company)
    Title (with IN = title)
    Phone (with IN = phone)
    Email (with IN = email)
    Topic combobox (with IN=topic)
    Message box (with IN=msg)
    Submit button (with IN=submit)
    I need help with the actionscript writing.  I am VERY new to flash and have never done any scripting really.  Does anyone have a sample file I can look at to see how it works or can someone IM me and I can send my file for them to help me?
    My IM is logan3975
    Any help is greatly appreciated.  I consider myself a pretty technical person so I do learn quick...I just need some guidance until I wrap my head around how this all works.  Thanks.

    Here's a link to a posting elsewhere some had had that may provide some useful info (?)
    http://board.flashkit.com/board/showthread.php?t=684031

  • Help with writing a batch file

    Hi :
    does anyone know anyplace online that I can get help in writing batch files?? I have never worked much with batch files before....
    any help is greatly appreciated
    thnx

    I suppose, since you're in a Java forum, you need batch files to load java applications.
    If you use windows :
    go to ms console (start/run/"cmd")
    type edit mybatch.bat
    write your command to load a java application, something like
    java myclass.class
    save and exit.
    Be sure the bat file and the class are in the same folder.
    And make certain you've set the classpath, and path variables correctly.
    If this was what you needed and you need more help just ask.
    (In this case it could be better to make executable jars)
    If you wanted to know about linux batches, it works pretty the same way.

  • Help with writing, reading a file...

    I'm writing a program that writes a number to a file and then reads it again each time it is loaded. It's like a counter, the number starts out being 0, then when the program is run again the number will be two, and so on and so on. I've never been good with writing incrementer type things and files, so could you help me out? Remember, the program writes a single number to the file, and then adds one to that number each time the program is run, so it starts at zero and goes up by one each time it is run.
    -Thanks... I just came back from vacation and my Java skills are somewhat lacking :P

    open old file -> get the number -> create a new file -> write new number

  • Need help with writing a rule

    Need help with some rules. I want to book a number to a specific Entity at a Specific Custom 4 only. I don't want this formula to work at all C4 levels. How can this be done?
    for example if Entity is "XBM1123" and we use C4 for tracking and the tracking level I want to book it to is IMPORT, how can this be done for a specific account 4400221
    I have my formula as
    If pov_value = "<Entity Currency>" or pov_value = "<Entity Curr Adjs>" Then
    If HS.Entity.Member = "XBM1123" or HS.Custom4.Member = "IMPORT" then
    HS.EXP "A#4400221= A#4521111 + A#3526644 + A#635210"
    End If
    End if
    this did not work. I got hte following error
    Calculate started.<BR>Error executing VBScript Microsoft VBScript runtime
    error, Line 259:Object doesn't support this property or method:
    'HS.Custom4.Member'.<BR>Calculate finished.<BR>Error executing
    VBScript %0.
    I then changed it to the below and it still did not work
    If pov_value = "<Entity Currency>" or pov_value = "<Entity Curr Adjs>" Then
    If HS.Entity.Member = "XBM1123" then
    HS.EXP "A#4400221.C4#IMPORT= A#4521111 + A#3526644 + A#635210"
    End If
    End if
    error
    Invalid Custom1 member
    specified for this function.
    Invalid Destination specified for this function:
    A#4400221.C4#IMPORT.

    You are close.
    Try:
    If pov_value = "<Entity Currency>" or pov_value = "<Entity Curr Adjs>" Then
        If HS.Entity.Member = "XBM1123" then
           HS.EXP "A#4400221.C4#IMPORT= A#4521111.C4#IMPORT + A#3526644.C4#IMPORT + A#635210.C4#IMPORT"
        End If
    End if
    or replace IMPORT with with Top_C4 or what ever member you need to copy to C4#IMPORT.
    Rule of thumb, to be on the safe side and for most simple calcs, is if you mention a dimension on the left side, you need to define it on the right side as well.

  • Need help with writing a query with dynamic FROM clause

    Hi Folks,
    I need help with an query that should generate the "FROM" clause dynamically.
    My main query is as follows
    select DT_SKEY, count(*)
    from *???*
    where DT_SKEY between 20110601 and 20110719
    group by DT_SKEY
    having count(*) = 0
    order by 1; The "from" clause of the above query should be generated as below
    select 'Schema_Name'||'.'||TABLE_NAME
    from dba_tables
    where OWNER = 'Schema_Name'Simply sticking the later query in the first query does not work.
    Any pointers will be appreciated.
    Thanks
    rogers42

    Hi,
    rogers42 wrote:
    Hi Folks,
    I need help with an query that should generate the "FROM" clause dynamically.
    My main query is as follows
    select DT_SKEY, count(*)
    from *???*
    where DT_SKEY between 20110601 and 20110719
    group by DT_SKEY
    having count(*) = 0
    order by 1; The "from" clause of the above query should be generated as below
    select 'Schema_Name'||'.'||TABLE_NAME
    from dba_tables
    where OWNER = 'Schema_Name'
    Remember that anything inside quotes is case-sensitive. Is the owner really "Schema_Name" with a capital S and a capital N, and 8 lower-case letters?
    Simply sticking the later query in the first query does not work.Right; the table name must be given when you compile the query. It's not an expression that you can generate in the query itself.
    Any pointers will be appreciated.In SQL*Plus, you can do something like the query bleow.
    Say you want to count the rows in scott.emp, but you're not certain that the name is emp; it could be emp_2011 or emp_august, or anything else that starts with e. (And the name could change every day, so you can't just look it up now and hard-code it in a query that you want to run in the future.)
    Typically, how dynamic SQL works is that some code (such as a preliminary query) gets some of the information you need to write the query first, and you use that information in a SQL statement that is compiled and run after that. For example:
    -- Preliminary Query:
    COLUMN     my_table_name_col     NEW_VALUE my_table_name
    SELECT     table_name     AS my_table_name_col
    FROM     all_tables
    WHERE     owner          = 'SCOTT'
    AND     table_name     LIKE 'E%';
    -- Main Query:
    SELECT     COUNT (*)     AS cnt
    FROM     scott.&my_table_name
    ;This assumes that the preliminary query will find exactly one row; that is, it assumes that SCOTT has exactly one table whose name starts with E. Could you have 0 tables in the schema, or more than 1? If so, what results would you want? Give a concrete example, preferably suing commonly available tables (like those in the SCOTT schema) so that the poepl who want to help you can re-create the problem and test their ideas.
    Edited by: Frank Kulash on Aug 11, 2011 2:30 PM

Maybe you are looking for

  • How to find a specific char in fileinputstream?

    Hi I've opened a fileinputstream for a text file. I need to read through it char by char to eof in order to find occurances of some ascii characters e.g. "," or "@" etc       int eofii =0;       try         FR = new FileReader("UnusualTextFile.txt");

  • Indesign CC 2014 keeps crashing - cannot keep open

    I have followed all the troubleshooting, I have uninstalled and reinstalled many times, checked fonts. Nothing works. Overtime I try to open Indesign since the latest Creative Cloud update, it crashes. All other Apps work fine. It is only Indesign. M

  • Connecting a power meter to PC via GPIB

    I'm trying to use LabVIEW to control an E4419B power meter using GPIB. When I connect it using the cable and bring up MAX, should the connection appear straight away or does further action need to be taken?

  • OBIEE 11g - Navigation from Hierarchy Column

    Hi Experts, I have created one Organization Hierarchy (Country --> Region --> State --> City) in the Logical Layer of the rpd and pull that hierarchy with the dimension in the Presentation Layer. In the new analysis I have created dashboard prompt wi

  • How to stop process flow?

    Hi there. I have oracle 9i + OWB 10.1..2. During last changes on the server (AIX) there was a problem with starting JServer. I didn't seem to be problem until I wanted to user Workflow Monitor. Obviously it didn't work. My question is: how to stop a