Dynamic class casting during runtime

I'm reading parameters for my application from the configuration file. Then in the code I should dynamically during the runtime make class cast:
(instead of having String in the code, I should cast the object to the class that was
defined in the configuration file.)
String tmp = (String) object;
Could somebody provide an example how can I do this? I have understood I could use reflection API for this problem.

I am not sure that I understand what you are asking correctly, but it might be something that bothered me some time ago.
My problem was that I wrote names of Classes (as Stings) into a file, and later wanted to be able to initialize a specific object of the class based on String names that were read from that file.(sorry if this is confusing).
I was programing a Chess simulator. All figures were subclasses of the class Figure, and were named Peon, Queen...)
I wanted to make a new Peon object, for every "Peon" String that was read from the file, and to make an new Queen object for every "Queen" in the file and so on.
I used something like this:
String objectName = in.readUTF(); //or some other way to get a String
Figure f = (Figure) Class.forName(objectName).newInstance(); Class.forName(String name) returns a object of class Class that represents all objects of type name.
And invoking .newInstance() gives you a new object of the class that is being represented by the object of class Class that you invoked .newInstance() on.
Sorry - migth be confusing again but i think it is correct.
This call to .newInstance() calls the default no-argument constructor...
There is no way to call a argument containing constructor with .newInstance()

Similar Messages

  • Can I do dynamic class cast with java SE1.4.2?

    Hi,
    I have some question on dynamic class cast.
    I'm using java SE1.4.2. Suppose I have a method :
    castObjectToSomething(Object o)
    Something s = (Something) o;
    However, I don't know what is the class to cast until runtime. How can I do a runtime class cast?
    I know that java 5.0 have a Class.cast() method which java1.4.2 does not have. But can I do the same stuff by using SE1.4.2?
    Thank You!!!!!
    oh_silly

    There is no sense in wanting to cast to a class that is only known at runtime. Because you can't do anything with such a class during runtime. Even though you could technically retrieve the class name, the method names and the parameter names, you could do nothing with this class as you don't know what it is doing. If you would know what it can do, you would know it also during compile time and then you would know the classname/interface name you want to cast to and can import it and use it reasonably.
    Tell us the requirement that you think you have and we will proof you that you don't need such a requirement.

  • Declare dynamic internal table during runtime error

    Hi Gurus,
    I have encounter a problem here. I would like to have several block of alv list output; for each customer open items details. Thus, i need to create dynamic internal table duirng runtime as i do not know how many customers that should be output before user enter from the selection screen field for customer code.
    I tried to search in the forums and found this website [Runtime Declaration of Internal Table;.
    But when i tried to execute it, i have an error. The field symbols that i passed into the call function REUSE_ALV_BLOCK_LIST_APPEND for parameter t_outtab does not match. May i know how do i go about it?
    Or are there any other solutions to display this kind of reports? I ever think of using hierarchy list alv. But it does not match the requirement. I would like to display the total amount for each customer. Can hierarchy list able to do so? Or it can only display as the grand total at the end of the report? I think it would be best to display as alv block output.
    Your help will be much appreciated. <offer removed by moderator>
    Thanks
    Edited by: Thomas Zloch on Oct 22, 2010 11:23 AM

    the problem comes up, when there are fields in the table which represent numbers with decimals (type p). Best is to reference the field directly what comes from SAP. Replace the LOOP At idetails ... ENDLOOP with:
    LOOP AT idetails INTO xdetails.
        CLEAR xfc.
        xfc-fieldname = xfc-ref_field = xdetails-name .
        xfc-ref_table   = p_table.
    *    xfc-datatype = xdetails-type_kind.
    *    xfc-inttype = xdetails-type_kind.
    *    xfc-intlen = xdetails-length.
    *    xfc-decimals = xdetails-decimals.
        APPEND xfc TO ifc.
      ENDLOOP.

  • Dynamic class casting.

    Hi Friends,
    How do I cast an object dynamically ?
    Here I made a sample example for what I need exactly.
    java.lang.String str = "sample";
    java.lang.Object obj = str;
    Class cls = obj.getClass();
    java.lang.String tmpStr = (cls)obj; // this is an error.
    Instead of casting like (java.lang.String), I wanted to replace "(java.lang.String)" with an variable.
    Any ideas??
    Thanks,
    SK.

    Doesn't make sense to me at all why you think you'd
    need that. You already know you want it to be a
    java.lang.String, because you coded:
    java.lang.String tmpStr = (cls)obj;
    Certainly you and the compiler have to know beforehand
    the object type you need to cast to, so why the fuss?Hi,
    I typed wrongly in my org. note. Sorry about that.
    Actual code snippet looks like this.
    java.lang.String str = "sample";
    java.lang.Object obj = str;
    Class cls = obj.getClass();
    cls tmpStr = (cls)obj; // this is giving me an error.
    I wanted to cast that field dynamically, because upfront I dont know the type of the object.
    In the above example, just for the example sake, I selected a data type "String". Actually I need to cast it based on the type of the object at runtime.
    Thanks,
    SK.

  • Dynamic class loading at runtime issues

    Hi,
    my system works by loading lots of classes located in numerous jars at runtime, it works ok but there are a few things i would like to resolve.
    1. When i come to implement an interface that is located in a jar with my IDE, the names of method variables are lost. So instead of the method having the inputs I set such as "String name, String type", i see "String s1, String s2". This is inconvinient and very error prone!
    2. If an exception is thrown in one of my dynamically loaded classes, the line at which the exception occoured at is lost. So instead of saying "some.package.FautlyClass.method(FautlyClass.java:39)" in an exception it says " some.package.FautlyClass.method(Unkown Source)". This even happens when i output a log from the class from which the exception is thrown.
    If anyone has any help/advice/solutions with these issues it would be much appreciated.
    Ck

    Most IDE's have an option, usually in the compiler preferences or project area, to "save local variable names". That should remove the "unknown source" message, but it will depend vastly on your IDE's options.
    Which IDE are you using? I've never heard of one dynamically renaming variables on the fly, unless you are specifically asking it to obfuscate your code.
    - Saish
    "My karma ran over your dogma." - Anon

  • Dynamically Aggregations Selection during runtime in OBIEE 11g

    Can anyone help me how to choose aggregations dynamically in OBIEE 11g while runtime.
    Say i have SUM and AVG as two aggregations, and depending on any one of selection my column total should vary.
    I acheived this using Variable prompt, but i want it as a drop down and just by toggling between the two my report should change with out using go / apply button.
    I tried and came to conclusion that these are static text and doesn't have any database value it can't be showed as dropdown.
    Thanks,
    Swathi

    shud be simple...Simply Create 2 Pivot Views for same Criteria in Single report and perform SUM and AVG for each. Now use View Selector to toggle between two Pivot to get SUM and AVG reports.

  • Dynamic class cast and instanceof

    I am looking for a way to dynamically test an object for being of a specific class. The instanceof operator can only be used with literally named classes I understand. So you cannot have something like boolean checkClass( Object o, Class c ) {
       return o instanceof c;
    } Is there any way to do something like this by use of the reflection API? The point is that instanceof only works statically, the reference type being tested for being specified at compile time. The question is whether it can be done with a reference type being specified at run-time, ie dynamically.

    There is a collection of parameters of various types, which is passed to some client module.
    There should be a, say 'checkParam' method for the client, which checks for existence of a certain parameter by its name, and also specified which class the parameter should have. So it should be called like
    checkParam( params, "paramName", String.class )I wanted to avoid hard-coded types, but have the class specified as an argument to this method. I feel like there should be some way to accomplish that. What swingfreak intended may be a way.

  • Dynamic Class cast

    I have an instance of a class as a generic Object and I want to
    get all the methods and fields etc without resorting to too much
    reflection.
    Object o; //i have this
    Class c = o.getClass();
    c myobj = (c)o; //i want to do some casting and not go into getting declared
              //fields and methods and then call them.
    myObj.get(...); //get values from there
    Is it possible or any other way?

    No you can't do that. Basically your question is, can I use reflection without using reflection.

  • Poplist highling last item during runtime

    I have a dynamic poplist and during runtime the last item is selected. How can I get the 1st item of the list to highlight?
    Thanks.

    Since the poplist might have the possiblity of changing I don't really know what the initial value should be. Is there a way to make generic? For example: 1 runtime the first item may be apple but then the next time it runs it might be banana.
    Help?

  • Embed fonts in dynamic TLF textfied which is created during runtime!!

    Hi Experts,
    I have two TLF textfileds in my application. The first TLF textfield is on the stage and the second one is created dynamically during runtime. Now I am able to embed the fonts in the first TLF textfield by using "use device fonts" since it is on stage. The flash player the rendering the data absolutely fine. I want to get the same look and feel for the second TLF textfield which is created dynamically during runtime. I tried so many ways. But it still seems ugly. Please help me out.
    Here is the code I am trying.
                var fmt:TextFormat = new TextFormat();                    //Text Format
                fmt.color = 0x000000;
                fmt.font = "Verdana";
                fmt.size = 14;
                fmt.align="left";
                fmt.bold = true;
                txt.defaultTextFormat = fmt;                                  //txt is a textfield which is on stage
                txt.text = e.target.xml..textField_stage;//textField_stage is a node in the xml
                txt.wordWrap = true;
                var tlf:TLFTextField=new TLFTextField();
                tlf.x = 80;
                tlf.y= 80;
                tlf.width = 290;
                tlf.height = 200;
                tlf.selectable=false;
                tlf.mouseEnabled=false;
                tlf.mouseChildren=false;
                tlf.wordWrap = true;
                addChild(tlf);
                tlf.defaultTextFormat = fmt;
                tlf.text = e.target.xml..textField_runtime;               //textField_runtime is a node in the xml
    Thanks for your help,
    srinivas

    to embed fonts dynamically, you need to add a font your library (click the library panel's upper right, click new font, select your font, select your characters, tick export for actionscript and assign a class name - eg, VerdanaClass).
    you would then use:
                var fmt:TextFormat = new TextFormat();                    //Text Format
    var verdana:Font=new VerdanaClass();
                fmt.color = 0x000000;
                fmt.font = verdana.fontName;
                fmt.size = 14;
                fmt.align="left";
                fmt.bold = true;
                txt.defaultTextFormat = fmt;                                  //txt is a textfield which is on stage
                txt.text = e.target.xml..textField_stage;//textField_stage is a node in the xml
                txt.wordWrap = true;
                var tlf:TLFTextField=new TLFTextField();
    tlf.embedFonts=true;
                tlf.x = 80;
                tlf.y= 80;
                tlf.width = 290;
                tlf.height = 200;
                tlf.selectable=false;
                tlf.mouseEnabled=false;
                tlf.mouseChildren=false;
                tlf.wordWrap = true;
                addChild(tlf);
                tlf.defaultTextFormat = fmt;
                tlf.text = e.target.xml..textField_runtime;               //textField_runtime is a node in the xml

  • Can I create a dynamic number of inputs during runtime?

    Can I create a dynamic number of inputs during runtime?
    Oracle 11g
    Application Express 4.0.2.00.06
    Here is my problem:
    We have a table that holds metadata about files (hardcopy or softcopy files).
    We expect we may need more columns in the table at some point and don't want to modify the table or the application.
    So in order to do this I would like to create:
    A table called TBL_FILE with the columns:
    TBL_FILE_ID               NUMBER                (This will be the primary key)
    TBL_FILE_NAME          VARCHAR2(1000) (This will be the name of the file)
    A second table will be called TBL_FILE_META with the columns:
    TBL_META_ID               NUMBER               (This will be the primary key)
    TBL_FILE_ID               NUMBER                (This will be the forign key to the file table)
    TBL_META_COLUMN     VARCHAR2(30)     (This is what the column name would be if it existed in TBL_FILE)
    TBL_META_VALUE          VARCHAR2(1000) (This is the value that record and the 'would be' column)
    So a person can have as much meta data on the file with out having to add columns to the table.
    The problem is how can I allow users to add as much data as they like with out having to re develop the page.
    Other things to note is that we would like this to be on a single page.
    I know how to add we can create multi-row inserts by using a SQL Query (updateable report),
    however the TBL_META_VALUE column in the TBL_FILE_META will sometimes be a select list and other times a text box or number field.
    So I don't see now a SQL Query (updateable report) would work for this and I can't create an array of page items at run time can I?
    Any idea's how I could accomplish this? Is there a better way of doing this?
    Also is there a term or a name for what I am doing by creating these 'virtual' columns in another table?
    I found this method when looking at Oracles Workflow tables.

    Welcome to the Oracle Forums !
    >
    Can I create a dynamic number of inputs during runtime?
    Oracle 11g
    Application Express 4.0.2.00.06
    Here is my problem:
    We have a table that holds metadata about files (hardcopy or softcopy files).
    We expect we may need more columns in the table at some point and don't want to modify the table or the application.
    So in order to do this I would like to create:
    A table called TBL_FILE with the columns:
    TBL_FILE_ID NUMBER (This will be the primary key)
    TBL_FILE_NAME VARCHAR2(1000) (This will be the name of the file)
    A second table will be called TBL_FILE_META with the columns:
    TBL_META_ID NUMBER (This will be the primary key)
    TBL_FILE_ID NUMBER (This will be the forign key to the file table)
    TBL_META_COLUMN VARCHAR2(30) (This is what the column name would be if it existed in TBL_FILE)
    TBL_META_VALUE VARCHAR2(1000) (This is the value that record and the 'would be' column)
    So a person can have as much meta data on the file with out having to add columns to the table.
    The problem is how can I allow users to add as much data as they like with out having to re develop the page.
    >
    Creating Page Items dynamically is not available. You will have to create excess items and hide/show , etc. But you cannot change the Item Type. All in all, too many limitations in this approach.
    >
    Other things to note is that we would like this to be on a single page.
    >
    The 100 item limit will hit you if you go with extra item on page. With Tabular Form that should not be a limitation, unless you are exceeding the 50 item limit of APEX_APPLICATION.G_Fnn items, and the 60 column limitation of Report region with "Use Generic Column Names (parse query at runtime only)" of Dynamic region.
    >
    I know how to add we can create multi-row inserts by using a SQL Query (updateable report),
    however the TBL_META_VALUE column in the TBL_FILE_META will sometimes be a select list and other times a text box or number field.
    >
    If the type if item is variable it only means you need a way to store the item type. Meta Data of the Meta Data.
    >
    So I don't see now a SQL Query (updateable report) would work for this and I can't create an array of page items at run time can I?
    >
    Yes, you can do it. Updatable report/ Tabular Form query can be constructed from the Meta Data using PL/SQL Function Returning SQL Query . It will be a bit of coding in PL/SQL where you use the Meta Data and the Meta Data of the Meta Data to piece together your SELECT with the right APEX_ITEMs. It might have a performance penalty associated with it, but will not be a serious degradation.
    >
    Any idea's how I could accomplish this? Is there a better way of doing this?
    Also is there a term or a name for what I am doing by creating these 'virtual' columns in another table?
    I found this method when looking at Oracles Workflow tables.
    >
    I guess that is just a good TNF. It is the Master-Detail Design Pattern, that sound more modern ? ;)
    Regards,

  • Generate and Compile new classes during runtime

    Hi!
    I use the Parser-Generator JavaCC to build a parser from a BNF-Grammar.
    During runtime, the user shall be able to change the
    grammar, so the Parser-Generator will build new .java-Files for the new Parser.
    Does anyone know any Java-Generic-Methods to use .java-Files in a program? Or do they have to be compiled with javac?
    Or does perhaps anyone know a Parser reading a BNF-Grammar-File and parsing according to this grammar?
    Thanks a lot for possible Help, Henning.

    Here is a link to a useful program with source code that uses javac. It creates a window and allows you to type in java source code and execute. I use it to test small java functions that I'm not very familiar with.
    http://www.javaworld.com/javatips/jw-javatip131.html?#

  • Class Cast Exception running Kodo JCA in Weblogic 8.1

    Hi,
    I have a stateless session EJB that accesses Kodo through the JCA adapter.
    The database I'm connecting to is mysql.
    The problem I'm having is that the persistence manager throws a class cast
    exception when trying to commit the transaction. See below for the stack
    trace. I suspect it has something to do with the mapping, but the error
    doesn't give me enough information to tell.
    Any idea where to start looking to solve this problem?
    Merrill
    <Sep 14, 2004 9:09:40 AM PDT> <Error> <EJB> <BEA-010026> <Exception
    occurred during commit of transaction Name=[EJB ossj
    inventory.bean.impl.JVTInventorySessionBean.createEntitySpecificationByValue(javax.oss.cbe.EntitySpecificationValue)],X
    id=BEA1-0003E542E34E0D33F21F(21266875),Status=Rolled back.
    [Reason=kodo.util.FatalException: java.lang.ClassCastExceptio
    n
    NestedThrowables:
    java.lang.ClassCastException],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds
    since begin=13,seconds left=30,SCInfo[os
    sj+myserver]=(state=rolledback),properties=({weblogic.transaction.name=[EJB
    ossj.inventory.bean.impl.JVTInventorySession
    Bean.createEntitySpecificationByValue(javax.oss.cbe.EntitySpecificationValue)]}),OwnerTransactionManager=ServerTM[Server
    CoordinatorDescriptor=(CoordinatorURL=myserver+10.4.110.92:7001+ossj+t3+,
    XAResources={},NonXAResources={})],Coordinator
    URL=myserver+10.4.110.92:7001+ossj+t3+): kodo.util.FatalException:
    java.lang.ClassCastException
    NestedThrowables:
    java.lang.ClassCastException
    at
    kodo.runtime.PersistenceManagerImpl.beforeCompletion(PersistenceManagerImpl.java:825)
    at
    weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInfo.java:1010)
    at
    weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCInfo.java:115)
    at
    weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(ServerTransactionImpl.java:1184)
    at
    weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerTransactionImpl.java:1910)
    at
    weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:273)
    at
    weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:244)
    at
    weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:299)
    at
    weblogic.ejb20.internal.StatelessEJBObject.postInvoke(StatelessEJBObject.java:140)
    at
    ossj.inventory.bean.impl.JVTInventorySession_h5aqa8_EOImpl.createEntitySpecificationByValue(JVTInventorySessi
    on_h5aqa8_EOImpl.java:4968)
    at
    ossj.inventory.bean.impl.JVTInventorySession_h5aqa8_EOImpl_WLSkel.invoke(Unknown
    Source)
    at
    weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
    at
    weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
    at
    weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
    at
    weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
    at
    weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
    at
    weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
    at
    weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
    Caused by: java.lang.ClassCastException
    at kodo.jdbc.sql.AbstractRow.toSQL(AbstractRow.java:657)
    at kodo.jdbc.runtime.RowImpl.flush(RowImpl.java:250)
    at
    kodo.jdbc.runtime.PreparedStatementManager.flush(PreparedStatementManager.java:125)
    at
    kodo.jdbc.runtime.UpdateManagerImpl.flush(UpdateManagerImpl.java:361)
    at
    kodo.jdbc.runtime.UpdateManagerImpl.flush(UpdateManagerImpl.java:168)
    at
    kodo.jdbc.runtime.UpdateManagerImpl.flush(UpdateManagerImpl.java:73)
    at
    kodo.jdbc.runtime.JDBCStoreManager.flush(JDBCStoreManager.java:590)
    at
    kodo.runtime.DelegatingStoreManager.flush(DelegatingStoreManager.java:152)
    at
    kodo.runtime.PersistenceManagerImpl.flushInternal(PersistenceManagerImpl.java:964)
    at
    kodo.runtime.PersistenceManagerImpl.beforeCompletion(PersistenceManagerImpl.java:813)

    Can you use 3.1.5. Can you also be sure that you don't have multiple
    versions of Kodo around, i.e. in the system classpath, JCA kodo.rar
    directory, etc?
    Merrill Higginson wrote:
    Abe White wrote:
    What version of Kodo?I'm using Kodo V 3.1.2
    Steve Kim
    [email protected]
    SolarMetric Inc.
    http://www.solarmetric.com

  • Dynamic class loading problem using unknown JAR archive and directory names

    I read the following article, which enlightened me a lot:
    Ted Neward: Understanding Class.forName().
    However, it took me some while to understand that my problem is the other way around:
    I know the name of the class, I know the name of the method,
    but my program/JVM does not know where to load the classes from.
    Shortly, my problem is that the server engine that I am writing
    uses two different versions of the same library.
    So I am trying out the following solution:
    My program is named TestClassPathMain.java
    Assume the two libraries are named JAR1.jar and JAR2.jar
    and the class/instance method that should
    be exposed to TestClassPathMain.java by them is named
    TestClass1.testMethod().
    As long as I was depending on just one library,
    I put JAR1.jar in the classpath before starting java,
    and I was happy for a while.
    At the moment I got the need to use another version of
    TestClass1.testMethod() packaged in JAR2.jar,
    a call would always access JAR1.jar's
    TestClass1.testMethod().
    I then decided to remove JAR1.jar from the classpath,
    and programmatically define two separate ClassLoaders, one for use
    with JAR1.jar and the other for use with JAR2.jar.
    However, the problem is only partly solved.
    Please refer to the enclosed code for details.
    (The code in the JAR1.jar/JAR2.jar is extremely simple,
    it just tells (by hardcoding) the name of the jar it is packaged in
    and instantiates another class packaged in the same jar using
    the "new" operator and calls a method on it. I don't enclose it.)
    The TestClassPathMain.java/UC1.java/UC2.java code suite was
    successfully compiled with an arbitrary of JAR1 or JAR2 in the classpath,
    however removed from the classpath at runtime.
    (I know that this could have been done (more elegantly...?) by producing an Interface,
    but I think the main problem principle is still untouched by this potential lack of elegancy(?))
    1) This problem should not be unknown to you experts out there,
    how is it generally and/or most elegantly solved?
    The "*** UC2: Variant 2" is the solution I would like best, had it only worked.
    2) And why arent "*** UC2: Variant 2" and
    "*** static UC2: Variant 2" working,
    while "*** Main: Variant 2" is?
    3) And a mal-apropos:
    Why can't I catch the NoClassDefFoundError?
    The output:
    *** Main: Variant 1 JAR 1 ***:
    Entering TestClass1.testMethod() packaged in JAR1.jar
    About to instantiate TestClass2 with the new operator
    About to call TestClass2.testMethod()
    Entering TestClass2.testMethod() packaged in JAR1.jar
    *** Main: Variant 1 JAR 2 ***:
    Entering TestClass1.testMethod() packaged in JAR2.jar
    About to instantiate TestClass2 with the new operator
    About to call TestClass2.testMethod()
    Entering TestClass2.testMethod() packaged in JAR2.jar
    *** Main: Variant 2 JAR 1 ***:
    Entering TestClass1.testMethod() packaged in JAR1.jar
    About to instantiate TestClass2 with the new operator
    About to call TestClass2.testMethod()
    Entering TestClass2.testMethod() packaged in JAR1.jar
    *** Main: Variant 2 JAR 2 ***:
    Entering TestClass1.testMethod() packaged in JAR2.jar
    About to instantiate TestClass2 with the new operator
    About to call TestClass2.testMethod()
    Entering TestClass2.testMethod() packaged in JAR2.jar
    *** UC1: Variant 1 JAR 1 ***:
    Entering TestClass1.testMethod() packaged in JAR1.jar
    About to instantiate TestClass2 with the new operator
    About to call TestClass2.testMethod()
    Entering TestClass2.testMethod() packaged in JAR1.jar
    *** UC1: Variant 1 JAR 2 ***:
    Entering TestClass1.testMethod() packaged in JAR2.jar
    About to instantiate TestClass2 with the new operator
    About to call TestClass2.testMethod()
    Entering TestClass2.testMethod() packaged in JAR2.jar
    *** static UC2: Variant 2 JAR 1 ***:
    Exception in thread "main" java.lang.NoClassDefFoundError: TestClass1
            at UC2.runFromJarVariant2_static(UC2.java:56)
            at TestClassPathMain.main(TestClassPathMain.java:52)
    TestClassPathMain.java
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLClassLoader;
    public class TestClassPathMain {
        public static void main(final String args[]) throws MalformedURLException, ClassNotFoundException, InstantiationException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
                // Commented out because I cannot catch the NoClassDefFoundError.
                // Why?
                try {
                    final TestClass1 testClass1 = new TestClass1();
                    System.out.println(
                        "\nThe class TestClass1 is of some unexplicable reason available." +
                        "\nFor the purpose of the test, it shouldn't have been!" +
                        "\nExiting");
                    System.exit(1);
                } catch (NoClassDefFoundError e) {
                    System.out.println("\nPositively confirmed that the class TestClass1 is not available:\n" + e);
                    System.out.println("\n\nREADY FOR THE TEST: ...");
                // Works fine
                System.out.println("\n*** Main: Variant 1 JAR 1 ***:");
                runFromJarVariant1("file:/W:/java/eclipse/workspaces/simped_test/CP1/JAR1.jar");
                System.out.println("\n*** Main: Variant 1 JAR 2 ***:");
                runFromJarVariant1("file:/W:/java/eclipse/workspaces/simped_test/CP2/JAR2.jar");
                // Works fine
                System.out.println("\n*** Main: Variant 2 JAR 1 ***:");
                runFromJarVariant1("file:/W:/java/eclipse/workspaces/simped_test/CP1/JAR1.jar");
                System.out.println("\n*** Main: Variant 2 JAR 2 ***:");
                runFromJarVariant1("file:/W:/java/eclipse/workspaces/simped_test/CP2/JAR2.jar");
                // Works fine
                final UC1 uc1 = new UC1();
                System.out.println("\n*** UC1: Variant 1 JAR 1 ***:");
                uc1.runFromJarVariant1("file:/W:/java/eclipse/workspaces/simped_test/CP1/JAR1.jar");
                System.out.println("\n*** UC1: Variant 1 JAR 2 ***:");
                uc1.runFromJarVariant1("file:/W:/java/eclipse/workspaces/simped_test/CP2/JAR2.jar");
                // Crashes
                System.out.println("\n*** static UC2: Variant 2 JAR 1 ***:");
                UC2.runFromJarVariant2_static("file:/W:/java/eclipse/workspaces/simped_test/CP1/JAR1.jar");
                System.out.println("\n*** static UC2: Variant 2 JAR 2 ***:");
                UC2.runFromJarVariant2_static("file:/W:/java/eclipse/workspaces/simped_test/CP2/JAR2.jar");
                // Crashes
                final UC2 uc2 = new UC2();
                System.out.println("\n*** UC2: Variant 2 JAR 1 ***:");
                uc2.runFromJarVariant2("file:/W:/java/eclipse/workspaces/simped_test/CP1/JAR1.jar");
                System.out.println("\n*** UC2: Variant 2 JAR 2 ***:");
                uc2.runFromJarVariant2("file:/W:/java/eclipse/workspaces/simped_test/CP2/JAR2.jar");
        private static void runFromJarVariant1(final String jarFileURL)
            throws MalformedURLException,
                   ClassNotFoundException,
                   InstantiationException,
                   IllegalArgumentException,
                   IllegalAccessException,
                   InvocationTargetException,
                   SecurityException,
                   NoSuchMethodException {
            final URL url = new URL(jarFileURL);
            final URLClassLoader cl =
                new URLClassLoader(new URL[]{url},
                                   Thread.currentThread().getContextClassLoader());
            final Class clazz = cl.loadClass("TestClass1");
            final Object testClass1 = clazz.newInstance();
            final Method testMethod1 = clazz.getMethod("testMethod", null);
            testMethod1.invoke(testClass1, null);
        private static void runFromJarVariant2(final String jarFileURL)
            throws MalformedURLException,
                   ClassNotFoundException,
                   InstantiationException,
                   IllegalArgumentException,
                   IllegalAccessException,
                   InvocationTargetException,
                   SecurityException,
                   NoSuchMethodException {
            final URL url = new URL(jarFileURL);
            final URLClassLoader cl =
                new URLClassLoader(new URL[]{url},
                                   Thread.currentThread().getContextClassLoader());
            final Class clazz = cl.loadClass("TestClass1");
            final TestClass1 testClass1 = new TestClass1();
            testClass1.testMethod();
    UC1.java
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLClassLoader;
    public class UC1 {
        public void runFromJarVariant1(final String jarFileURL)
            throws MalformedURLException,
                   ClassNotFoundException,
                   InstantiationException,
                   IllegalArgumentException,
                   IllegalAccessException,
                   InvocationTargetException,
                   SecurityException,
                   NoSuchMethodException {
            final URL url = new URL(jarFileURL);
            final URLClassLoader cl =
                new URLClassLoader(new URL[]{url},
                                   Thread.currentThread().getContextClassLoader());
            final Class clazz = cl.loadClass("TestClass1");
            final Object testClass1 = clazz.newInstance();
            final Method testMethod1 = clazz.getMethod("testMethod", null);
            testMethod1.invoke(testClass1, null);
    UC2.java
    import java.lang.reflect.InvocationTargetException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLClassLoader;
    public class UC2 {
        public void runFromJarVariant2(final String jarFileURL)
        throws MalformedURLException,
               ClassNotFoundException,
               InstantiationException,
               IllegalArgumentException,
               IllegalAccessException,
               InvocationTargetException,
               SecurityException,
               NoSuchMethodException {
            final URL url = new URL(jarFileURL);
            final URLClassLoader cl =
                new URLClassLoader(new URL[]{url},
                                   Thread.currentThread().getContextClassLoader());
            final Class clazz = cl.loadClass("TestClass1");
            final TestClass1 testClass1 = new TestClass1();
            testClass1.testMethod();
         * Identic to the "runFromJarVariant2" method,
         * except that it is static
        public static void runFromJarVariant2_static(final String jarFileURL)
        throws MalformedURLException,
               ClassNotFoundException,
               InstantiationException,
               IllegalArgumentException,
               IllegalAccessException,
               InvocationTargetException,
               SecurityException,
               NoSuchMethodException {
            final URL url = new URL(jarFileURL);
            final URLClassLoader cl =
                new URLClassLoader(new URL[]{url},
                                   Thread.currentThread().getContextClassLoader());
            final Class clazz = cl.loadClass("TestClass1");
            final TestClass1 testClass1 = new TestClass1();
            testClass1.testMethod();
    }

    2. i need to load the class to the same JVM (i.e. to
    the same environment) of the current running
    aplication, so that when the loaded class is run, it
    would be able to invoke methods on it!!!
    ClassLoader(s) do this. Try the URLClassLoader.
    (I was talking about relatively esoteric "security"
    issues when I mentioned the stuff about Class objects
    "scope".) You might use the URLClassLoader kind of
    like this.
    Pseudo-code follows:
    // setup the class loader
    URL[] urls = new URL[1];
    urls[0] = new URL("/path/to/dynamic/classes");
    URLClassLoader ucl = new URLClassLoader(urls);
    // load a class & use make an object with the default constructor
    Object tmp = ucl.loadClass("dynamic.class.name").newInstance();
    // Cast the object to a know interface so that you can use it.
    // This may be used to further determine which interface to cast
    // the class to. Or it may simply be the interface to which all
    // dynamic classes have to conform in your program.
    InterfaceImplementedByDynamicClass loadedObj =
        (InterfaceImplementedByDynamicClass)tmp;It's really not as hard as it sounds, just write a little test of
    this and you will see how it works.

  • Why do JCo destinations green in designtime, fail during runtime ?

    Manually verified JCo destination, both ping and test works.
    Ran the WebDynpro console sanity check tool. All tests green.
    When the application then tries to create a Jco connection during runtime I get these logs in defaultTrace on EP:
    Could not create JCOClientConnection for logical System: 'WD_BN_MODELDATA_DEST' - Model: 'class com.company.models.bn.BN'.
    supplyCheckInfos ...Class casted to IExternalStandardCheckInterface is class com.sap.tc.webdynpro.check.jcodest.wdp.InternalJCODestAvailabilityCheckInterface$External
    supplyCheckInfos ...Class cast issue CompUsage is class com.sap.tc.webdynpro.progmodel.components.ComponentUsage
    Any suggestions ?

    Hi,
    Make sure your metadata is updated in the model to that of the backend.
    Regards
    Ayyapparaj

Maybe you are looking for

  • IPod to TV problems

    I wanted to play movies from my iPod on my TV. So I went and spent $25 at Best Buy on a Creative A/V cable. The cable looked identical to the others at Radio Shack. I plugged the three color coded ends to the back of my TV (24" Mitsubishi) and the ot

  • Attempt to fetch cache data from Integration Directory failed

    HI, while checking cache connectivity testing: status is      green:   Integration Repository           green:    Integration Directory                green: Integration Server - JAVA                    red:Adapter Engine af.axd.aipid                

  • Best practice - moving home directories

    Hello all, I was looking for insight on best practices for moving home directories. I was thinking that using the migration tool would be best to move the directories and then using dsrazor to remap all of the home directories for our users. We are r

  • TS3274 My iPad seems to be working but it says no service in upper left corner?

    What does it mean if it says no service but everything is working?

  • Parameter list

    could anyone help simply i ve server 9ias enterprise edition release1 i ve java applications running well forms are running well too i installed patch11 on the server i ve a problems concerning the reports on running a report the parameter list doesn