Static final problem.

I am having one large java card application. Because of its size I splited it in three packages. One applet package and two library packages.
In one class that is part of one library package I am having several constants which are byte arrays. When I put the identifier static final, I was able to build the project but when I was running the applet, I was getting the exception 0x6F00 when I access that field in a static way. What can be the reason for that? When I modify these fields in a way that I remove the static final identifier and when I accessed that field in a instance manner, everything was ok.

Hi,
VCheck the JCVM spec for limitations on library packages. Since static fields (objects) are created in the context of the applet that first uses the class other applets in different packages would get a security exception when using these fields as they are in a different context. One solution is to initialise the constants in the applet and pass a reference to the class in the library package. This is not as clean but it works. Just be sure to clear the references when you uninstall the applet to allow the JCRE to remove your applet instances.
Cheers,
Shane

Similar Messages

  • Static member problem in multiple instance of  web application

    Problem
    I am working on a product which is java based. I have a war file. I have to deploy this war file in JBoss. Further, I need to run multiple instance of this war file in same JBoss instance.
    Issue
         In that war file there is servlet Start.java. That servlet calls an other class from its init method. Here is code
    public class Start extends HttpServlet
         public void init(ServletConfig config) throws ServletException
              super.init(config);
              DB.loadProperties (�db.properties�);
         } // init
         public void doGet(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException
                   } // doGet
         public void doPost(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException
                   } // doPost
    } // Start
    public final class DB implements Serializable
         public static final String     P_UID = "ApplicationUserID";
         private static final String     DEFAULT_UID = "System";
         public static final String     P_PWD = "ApplicationPassword";
         private static final String     DEFAULT_PWD ="System";
         public static final String     P_STORE_PWD = "StorePassword";
         private static Properties           s_prop = new Properties();
    public static boolean loadProperties (String filename)
         {    // looks for properties file
    s_prop = new Properties();
              FileInputStream fis = null;
              try
                   fis = new FileInputStream(filename);
                   s_prop.load(fis);
                   fis.close();
              catch (FileNotFoundException e)
                   log.warning(filename + " not found");
                   loadOK = false;
         �}
    As you can see if I deployed two instance of this war in JBoss and assume each instance point to its own properties file. The �Static� members are problem.
    Restriction
         I am not allowed change the code or logic of the product. I must be able to get some thing outside or apply a patch to solve this problem.
    Please Help
    Possible option that I have thought
    1 Using multiple JVM - Not an option in this project
    2 Using multiple JBoss � Not the requirement (need to run only on single Instance of JBoss)
    3 Use own class loader for war/ear � don�t know how in JBoss need help.
    I am using JBoss 3.2.3
    Thanks,
    Kumaran

    Static members belong to the class. So, you needto
    think of multiple JVMs for your problem.Thanks for reply.
    don�t know how in JBoss need helpJust guessing... clustered environment MAYBE
    RichThanks Rich,
    I don�t know how Cluster environment solve my problem. I need more information on your thought. Cloud you explain it.
    Kumaran

  • A solution for Secure Static Versioning problem in 1.5.0_10

    Hi,
    I have JRE 1.3.1_09 and 1.5.0_10 on my computer and I think I have solved static versioning problem.
    My test computer:
    - Windows XP sp2
    - Internet Explorer 7 (on another computer also IE 6)
    - Firefox 2.0.0.1
    - JRE 1.3.1_09
    - JRE 1.5.0_10
    I. Solution for Internet Explorer 6 and Internet Explorer 7
    1. Edit registry and add:
    HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Deployment\Policy
    DWORD: EnableSecureStaticVersioning = 0 (Hex)
    2. Restart browser if started.
    3. Start web page with java applet.
    II. Solution for Firefox 2.0.0.1:
    1. Install 1.3 JRE in the same parent directory as 1.5 JRE.
    Because default default installation path for 1.5 JRE is C:\Program Files\Java\jre1.5.0_10 you need to modify
    1.3 installation path from default C:\Program Files\JavaSoft\JRE\1.3.1_09 to C:\Program Files\Java\jre1.3.1_09
    After installation check out that "bin" directory is in the following path:
    C:\Program Files\Java\jre1.3.1_09\bin
    2. Install 1.5 JRE in default installation directory: C:\Program Files\Java\jre1.5.0_10.
    After installation check out that "bin" directory is in the following path:
    C:\Program Files\Java\jre1.3.1_09\bin
    3. Restart browser if started.
    4. Start web page with java applet.
    Note: HTML page must use <object> tabs for Internet Explorer or <embed> tabs for any other browser (e.g. Firefox). You need to specify correct classid in object and/or embed tag.
    P.S. If anyone would like to discuss with me send me an e-mail to [email protected], but please post question to forum and just mail me a link to forum. I will write my answer to forum.
    Hope this helps,
    Grofaty

    I have been trying to find a solution for this issue at our organization for over 6 months. Finally, we have a work around to run multiple java versions for newer and aging java apps.
    Thanks,
    Adunlow

  • Instantiation of static final objects

    Is there a problem with coding the following?:
    class A {
    public static final A static_final_a_obj = new A ( B.static_final_b_obj );
    private B b;
    public A ( B b ) {
    this.b = b;
    class B {
    public static final B static_final_b_obj = new B ( A.static_final_a_obj );
    private A a;
    public B ( A a ) {
    this.a = a;
    I put log messages in each of the constructors to see if it would cause an infinite loop, but it doesn't seem to. The question is 'why'.. :) How can either of the static final objects ever be fully instantiated?

    Exactly. It is not executed infinitely.
    class A {
    public static final A static_final_a_obj = new A ( B.static_final_b_obj );
    private B b;
    public A ( B b ) {
    System.out.println(" A Cons");
    this.b = b;
    public static void main(String args[]) {
         System.out.println("A");
    Output:
    B Cons
    A Cons
    A
    class B {
    public static final B static_final_b_obj = new B ( A.static_final_a_obj );
    private A a;
    public B ( A a ) {
    System.out.println(" B Cons");
    this.a = a;
    public static void main(String args[]) {
         System.out.println("B");
    Output:
    A Cons
    B Cons
    B
    Edited by: prajeshps on Sep 18, 2007 1:51 PM

  • ERROR: serializable class HelloComponent does not declare a static final

    Hi everyone! I'm sorry but I'm a newbie to Java and I'm having some, I assume, basic problems learning to compile and run with javac. Here is my code:
    import javax.swing.* ;
    import java.awt.* ;
    public class MyJava {
    * @param args
    public static void main(String[] args)
    // TODO Auto-generated method stub
    JFrame frame = new JFrame( "HelloJava" ) ;
    HelloComponent hello = new HelloComponent() ;
    frame.add( hello ) ;
    frame.setSize( 300, 300 ) ;
    frame.setVisible( true ) ;
    class HelloComponent extends JComponent
    public void paintComponent( Graphics g )
    g.drawString( "Hello Java it's me!", 125, 95 ) ;
    And here is the error:
    1. WARNING in HelloJava.java
    (at line 20)
    class HelloComponent extends JComponent {
    ^^^^^^^^^^^^^^
    The serializable class HelloComponent does not declare a static final serialVersionUID field of type long
    ANY HELP WOULD BE GREAT! THANKS! =)

    Every time I extend GameLoop, it gives me the warning
    serializable class X does not declare a static final serialVersionUID field of type long
    This is just a warning. You do not need to fix this because the class you are writing will never be serialized by the gaming engine. If you really want the warning to go away, add the code to your class:
    static final long serialVersionUID=0;

  • Help with public static final List

    I'm having a block here... I want to have a constant List, but I can't figure out how to do it so it actually contains the values I want. It's going to be a list of strings about 40 elements long. Obviously, if I didn't need the final, I'd just do List.add( ), but I need to do it right in the constructor. Thanks for the help.

    I guess the problem could be reworded, If I wantedto
    put this in a class that would never getinstantiated
    how would I initialize the List?You use a static intializer.Ah. I didn't get that out of the question. Thanks for the help.
    But here's an example:public class Foo {  
        static final java.util.List<String> list = new java.util.ArrayList<String>();
            list.add("one");
            list.add("two");
            list.add("three");
            // etc.
    }

  • Static Final boolean

    Ok, I am hoping someone can explain this to me. I have defined a static final boolean in a class:
    public static final boolean TEST_MODE = false;
    And in another class I use it:
    public void serverRequest(String url, String postData) throws RequestException {
    if (activeRequest == null) {
    *     if(ManagerRootPanel.TEST_MODE)*
    *          url = ManagerRootPanel.TEST_URL + url;*
    RequestBuilder builder = new RequestBuilder(
    postData == null ? RequestBuilder.GET : RequestBuilder.POST, url);
    lastRequestURL = url;
    activeRequest = builder.sendRequest(postData, this);
    When running the if statement is always executed, even when the boolean is compiled as false.
    *     if(ManagerRootPanel.TEST_MODE)*
    *          url = ManagerRootPanel.TEST_URL + url;*
    What am I missing?
    When I use:
    *     if(ManagerRootPanel.TEST_MODE == true)*
    *          url = ManagerRootPanel.TEST_URL + url;*
    it behaves according to my expectations.
    Wes
    Edited by: Wesley_Sonner on Sep 11, 2008 8:04 AM

    Wesley_Sonner wrote:
    Ok, I am hoping someone can explain this to me. I have defined a static final boolean in a class:
    public static final boolean TEST_MODE = false;
    And in another class I use it:
    public void serverRequest(String url, String postData) throws RequestException {
    if (activeRequest == null) {
    *     if(ManagerRootPanel.TEST_MODE)*
    *          url = ManagerRootPanel.TEST_URL + url;*
    RequestBuilder builder = new RequestBuilder(
    postData == null ? RequestBuilder.GET : RequestBuilder.POST, url);
    lastRequestURL = url;
    activeRequest = builder.sendRequest(postData, this);
    When running the if statement is always executed, even when the boolean is compiled as false.
    *     if(ManagerRootPanel.TEST_MODE)*
    *          url = ManagerRootPanel.TEST_URL + url;*
    What am I missing?
    When I use:
    *     if(ManagerRootPanel.TEST_MODE == true)*
    *          url = ManagerRootPanel.TEST_URL + url;*
    it behaves according to my expectations.
    Wes
    Edited by: Wesley_Sonner on Sep 11, 2008 8:04 AMPlease use code tags (hit the "code" button up there) when posting code - it makes it much easier to read.
    From what I can see your problem might be out-of-sync class files. Delete all class files, recompile, and then see if you get the behavior you're expecting.

  • Static final

    I need to share several objects among all instances, so I mark them as static. As far as these variables should be initialized only once they must be final as well. The problem is that I can't use static initializer, because these final static objects are constructed by 2nd class.
    class Y {
         private static final var1;
         private static final var2;
         Y() {}
         static void useVars() { ... }
         void useVars() { ... }
    class Main {
         public static void main(String[] args) {
              v1 = getVar1();
              v2 = getVar2();
              initClassY(v1, v2); // initializing static final vars for Y
    }

    You can use blank finals. This allows one to declare
    a final without initializing it.This is correct.
    The catch is you must initialize it before you use it.This is true, but not exact.
    Actually, you must initialize it in the constructor
    The following will not compile :
    public MyClass{
       final int BLANK_FINAL;
       public MyClass(int arg1){
          setBF(arg1);
       private void setBF(int arg1){
          BLANK_FINAL = arg1 * 200 + 86; //compiler error

  • Static final buffer passed into FilterOutputStream.write(byte[])

    Greetings,
    My team is using a custom subclass of FilterOutputStream to XOR some bytes with a key before writing them to an underlying OutputStream. We have never had problems with it until we started testing with Java 1.4.x -- where we noticed that some optimizations had been made to GZIPOutputStream to write the GZIP header out at once using a static final buffer to hold the header.
    The problem seems to be that this header, although marked as static final, can still be changed when it is passed to our custom FilterOutputStream's write(byte[] b) method. For speed, we are XORing the bytes in place in the byte[] and then writing it directly back out. So every time we write the header with the same key, the static final byte[] that holds the header in GZIPOutputStream changes from its XORed to cleartext equivalent, and back.
    My question is this: should this be considered a bug in the SDK, or a bug in our code? Maybe I'm looking in the wrong place, but I can't find any documentation that specifies what can and can't be done with a byte[] that is passed into the write(byte[]) method of an OutputStream.
    Any input is appreciated.
    Regards,
    Mike Pontillo

    Mike,
    Need some code here to clarify. Are you saying that
    the original final static (constant) changes?
    You've got to be careful when you talk about passing a
    byte[], which can't be done, of course. You are
    passing a reference to a byte[]. Using the reference,
    the bytes can be copied. There aren't any restrictions
    on what can be done to the copy.
    and also, if you have final array, then only that arrays'
    reference is final, but the content of array may change
    as well as when that array wasn't static.Yes, I understand this. Thank you for your replies. FilterOutputStream.write(byte[]) of course takes a reference to a byte[]. We are overloading this to be something like:
    public void write(byte[] b) {
       for(int i = 0 ; i < b.length ; i++) {
          b[i] = foo(b);
    out.write(b);
    i.e. we modify the array inside the method rather than making a copy and writing out the copy.
    This hasn't been a problem until Java 1.4.x -- now GZIPOutputStream passes a private static final byte[] (reference of course) into write(byte[]) in OutputStream. So when our overloaded write(byte[]) method gets called in FilterOutputStream and code similar to the above runs, the private static final reference to a byte[] is overwritten in the java.util.zip.GZIPOutputStream class. This was a change sometime between 1.3 and 1.4, I believe. From the J2SDK 1.4.1_02 source:
         * Writes GZIP member header.
        private final static byte[] header = {
            (byte) GZIP_MAGIC,                // Magic number (short)
            (byte)(GZIP_MAGIC >> 8),          // Magic number (short)
            Deflater.DEFLATED,                // Compression method (CM)
            0,                                // Flags (FLG)
            0,                                // Modification time MTIME (int)
            0,                                // Modification time MTIME (int)
            0,                                // Modification time MTIME (int)
            0,                                // Modification time MTIME (int)
            0,                                // Extra flags (XFLG)
            0                                 // Operating system (OS)
        private void writeHeader() throws IOException {
            out.write(header);
        }As you can see, they are passing a private static final reference to a byte array into somebody's untrusted method (ours). =)
    Due to this issue we have to change our code so that it makes a copy of these bytes rather than changing them in the method. Now I'm wondering if this should be considered a bug in Java or not -- does changing bytes like this violate the general contract of an Input/Output stream? It at least seems like a bad idea for encapsulation purposes since anyone can change these bytes in the GZIPOutputStream class. We had previously assumed that if they were writing these bytes to an output stream they didn't care about them any more, which is the case 99.9% of the time in our experience.

  • A non-solution to the static distortion problem

    I don't know if there's any chance of the following "solution" having value to anyone else but I'll submit it to be filed in the "For What It's Worth" folder.
    First, by way of preamble, I've upgraded iTunes a number of times now (going back to v. 4.6.0.15) and this is the first time I have had any sort of issue - the static/distortion problem that is presently being much-discussed in these forums.
    Following the leads in the early threads on this topic, I played a handful of song files with QuickTime and confirmed that everything sounded fine with that player.
    I went back to iTunes and the problem remained, although it struck me that it wasn't as severe as it had been.
    I continued playing songs, hoping for some sort of insight into what had gone wrong when it slowly dawned on me that the static/distortion had ended ... and I hadn't done anything - changed settings or anything else - except simply play songs.
    iTunes has been playing for a couple of hours now with no further sign of the problem.
    One final point of information, I'm guessing it was after having played in the area of 10-15 songs when the problem seems to have solved itself.

    I'll also add that I've since re-enabled the options I originally changed to "fix" my problem. I'm no longer getting the distortion, even with the options I changed.
    I'm not sure what's going on.. I guess I'm just glad my music is back to normal and that I can browse the Internet AND listen to music!

  • Enum vs static final String

    I was going to use static final Strings as enumerated constants in my application, but would like to see if I should be using enums instead.
    In terms of efficiency, if I have, say, 5 enumerated elements, will only one copy of the enumerated element be in memory, like a static final String? So regardless of how many times I refer to it, all references point to the same instance (I'm not sure if what I just said even makes sense in the context of enums, but perhaps you could clarify).
    Are there any reasons why for enumerated constants that are known at development time, why static final Strings (or static final anything, for that matter) should be used instead of enums if you're using JDK 1.5?
    Thanks.

    In terms of efficiency, if I have, say, 5 enumerated elements, will only one copy of
    the enumerated element be in memory, like a static final String?I don't know if it addesses your concerns, but the the Java Language Specification says this about enums: "It is a compile-time error to attempt to explicitly instantiate an enum type (�15.9.1). The final clone method in Enum ensures that enum constants can never be cloned, and the special treatment by the serialization mechanism ensures that duplicate instances are never created as a result of deserialization. Reflective instantiation of enum types is prohibited. Together, these four things ensure that no instances of an enum type exist beyond those defined by the enum constants." (http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9)
    As for the problems of memory usage, how big are these strings anyway?
    The advantages of using enums over static final strings are discussed in the "technotes" accompanying 1.5 http://java.sun.com/javase/6/docs/technotes/guides/language/enums.html They list the following as problems with the static final "antipattern"
      * It is not typesafe (methods that expect one of your constants can be sent any old string)
      * There is no name space - so you must continually be sure that your constants don't have names that may be confused
      * Brittleness. Your strings will be compiled into the clients that use them. Then later you add a new constant...
    �  * Printed values will be uninformative. Perhaps less of a problem for Strings, but, still, simply printing the string will leave its semantic significance obscure.

  • Hello , please am having a problem with my iphone 5 , the battery runs out quickly , also if i turn on 3G it will run faster , 15 minutes and the iphone battery will be out , and my final problem is that is "no service " appears a lot can you help ?

    Hello , please am having a problem with my iphone 5 , the battery runs out quickly ,another problem also if i turn on 3G it will run faster , 15 minutes and the iphone battery will be out . My final problem is that  "no service " appears a lot  especially when opening wifi or 3G , can you help ?

    Your battery is running quickly because your cellular data connection is weak.
    Is your phone carrier a supported carrier:   Wireless carrier support and features for iPhone in the United States and Canada - Apple Support
    For your no service issues:  If you see No Service in the status bar of your iPhone or iPad - Apple Support

  • Static final in (Class or Interface)

    Hello Friends ,
    What is the difference in having a public static final variable in an class and having the same kind of
    declarations in an Interface ?
    Does the interface is better or having it in a class ?
    Thanks in Advance,
    -S

    shyamnambiar wrote:
    But I'm not clear . you mean to say its all the same .It does not make any difference ?The only difference that it makes (and that might be an important difference) is what you communicate with your design an intention.
    Constants should usually be placed within their context since that's where they are going to be used, and that's where developers will look. It's more common to place the constants in the class that they are related to. They should not be placed in an empty final class just because you want to group constants. You should also avoid placing constants in an interface just because you then can implement that interface to "get hold of" the constants.
    Kaj

  • Declaring public static final variables in jsp?

    The question is in the title...
    I know this is not a jsp forum, but some people here might know if it's possible or not.
    If yes, how to declare them and how to access them from other jsp pages?
    Thx

    If you need that, you definitely do too much work in your JSPs. You should do all your work in Servlets (or Actions if you're using Struts or something similar).
    Your JSPs should only do the presentation.
    Remember that JSPs are not classes (they are compiled into classes internally, but you don't have direct access to those).
    If you absolutely need such a public static final field that you want to access from several JSPs, just define it in a Class and reference that class from your JSPs.

  • Trying to acces the value of a public static final int using reflection

    -Java 6
    -Windows XP
    -Signed Applet
    doing the following:
    Class.forName(classname).getField(code).getInt(null);
    is giving me the error:
    java.lang.IllegalAccessException: Class com.cc.applet.util.ServiceConfiguration can not access a member of class com.cc.util.error.codes.SendMessageErrorCodes with modifiers "public static final"
         at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
         at java.lang.reflect.Field.doSecurityCheck(Unknown Source)
         at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
         at java.lang.reflect.Field.getInt(Unknown Source)
    I'm not understanding why it can't access the value of the field. Any help would be great.
    Edited by: zparticle on Oct 17, 2007 11:07 PM

    stefan.schulz wrote:
    oebert, you are right. Good one.
    I actually think that, in this case, the message is misleading. The current implementation of sun.reflect.Reflection.ensureMemberAccess() treats any failing access check the same. It should and could inculde better contextual information.Stefan,
    That is a good point. Did you file a RFE with Sun yet? I also think they should provide a more contextual error message in this case.
    Gili

Maybe you are looking for

  • Get all the function button in SET_TABLE_FOR_FIRST_DISPLAY

    Hi Guys, I've used the the method SET_TABLE_FOR_FIRST_DISPLAY to display my ALV. Unfortunately, icons like TOTAL, FILTER..... that are availble in SET_TABLE_FOR_FIRST_DISPLAY is not working. Kindly please provide me answer why the icons are not worki

  • Message no. M8584 ''Enter a currency key'' in MIRO

    Hi Gurus, Infact I am facing a warning message while doing MIRO. Just after inputing MIRO header like Doc date, Posting date, Reference and lastly amount field when I press the enter, I get the above cited warning error. Can you please tell me how to

  • Usefull URL for ALL CS3 Users!!!

    You will eventually find this useful if you are a CS3 user. http://www.adobe.com/support/service/ts/documents/lod/lod_return.pdf

  • IE 10 Preferences Behavior

    So I am working on converting some IE Maintenance policies to IE 10 GPP to support Windows 7 and Windows 8.1 clients with IE 10 and 11. I understand that I need to use preferences but am a bit confused about how the application of these preferences w

  • Bluetooth disappears after mountain lion install

    After install of Mountain Lion, Bluetooth disappears from system preferences. Worked fined before install. System now indicates bluetooth hardward not available.