Change the classpath in catalina.sh

Hello
does anybody know how it is possible to add a classpath to the classpath defined in the catalina;sh of Tomcat?
I already tried to add it my self in a text editor, but it obviously doesn't work....
Philippe

1) Download the tomcat source code from apache and create a development environment that you can build tomcat from this source.
2) In the package org.apache.catalina.loader you will create your own classes. Easiest way to do this is copy the existing tomcat classes
2a) copy WebappLoader to MyWebappLoader
2b) copy WebappCLassloader to MyWebappClassLoader
3) In MyWebappLoader change:
3a) the constructors
3b)classLoader variable to be of type MyWebappClassLoader
3c) createClassLoader method to return MyWebappClassLoader type
3d) modify the setRepositories method to add new repositories you want Tomcat to check
4) In MyWebappClassLoader change:
4a) the constructors
4b) Modify the findResourceInternal(String name, String path) method to search the new repsoitories for classes
5) Edit the xml context file for your webapp to use the new class loader files you have created
<Context path="/myHello" docBase="myHello" debug="0" privileged="true">
  <Loader className="org.apache.catalina.loader.MyWebappLoader" delegate="true" reloadable="true"
   loaderCLass="org.apache.catalina.loader.MyWebappClassLoader" debug="0" />
</Context>6) add your class loader files to tomcat by putting them in the tomcat\server\classes\org\apache\catalina\loader directory
7) restart tomcat and test

Similar Messages

  • How to change the classpath in rmiregistry

    I am storing remote object stubs in an RMI registry as part of my application. When I try to bind my objects to the rmiregistry started by the kxs process on port 1099, I get class def not found errors because that rmiregistry does not have my classes in the classpath. My classes are in the iAS classpath because I added them through the registry.
    When I start my own rmiregistry on a different port and set the classpath environment variable to include my classes, then I have no problems.
    Does anyone know how to change the classpath for the rmiregistry started by the kxs process?
    I am running iAS sp3 on Windows 2000 adn Solaris
    Thanks,
    Mark

    Hi,
    I would like to help, but could you kindly clarify what rmiregistry
    means ?
    Regards
    Raj
    Mark Priest wrote:
    I am storing remote object stubs in an RMI registry as part of my
    application. When I try to bind my objects to the rmiregistry started
    by the kxs process on port 1099, I get class def not found errors
    because that rmiregistry does not have my classes in the classpath.
    My classes are in the iAS classpath because I added them through the
    registry.
    When I start my own rmiregistry on a different port and set the
    classpath environment variable to include my classes, then I have no
    problems.
    Does anyone know how to change the classpath for the rmiregistry
    started by the kxs process?
    I am running iAS sp3 on Windows 2000 adn Solaris
    Thanks,
    Mark
    Try our New Web Based Forum at http://softwareforum.sun.com
    Includes Access to our Product Knowledge Base!

  • How do you change the CLASSPATH in windows XP

    How do you add a *.jar file to you CLASSPATH on Windows XP?
    I can see the PATH variable but there is no CLASSPATH variable

    Your CLASSPATH should be under -users variables-, if it's not there, just create it. Click on New, then next to Variable name, type in CLASSPATH, and next to variable value, type in your .jar file....
    That should be enough...hopefully!!
    Good luck!
    Sylvie

  • How to change the server CLASSPATH

    Hello,
    I am using OracleAS 10g (9.0.4.0) and I need to reference a properties file from my application which is stored in a folder outside the OAS installation folders. For that reason I want to add this "external" path to the CLASSPATH that the server uses (I don't want to change my application's CLASSPATH but rather change the CLASSPATH that all applications use). Can someone tell me how can I achieve this? For example in Weblogic I can do this by changing the startup.sh script that starts the server. Is there something similar in OAS? Thank you.
    Panos

    Hello
    You can create libraries, that allows you at the application or OC4J instance level to specify which jar/classes files will be loaded, take a look to the documentation
    I am encouraging you to read the paper "Classloading in OC4J". (note that this paper is valid for 10.1.2 or early and not valid for OC4J 10.1.3 where the class loader mechanism has been updated)
    Tugdual Grall

  • Dynamic changing of CLASSPATH in jvm

    hi.
    I'm developing a JNI software which invokes java methods from native C code.
    The program get several .jar files from network, and start install java classes on JVM. And since this program get several .jar files dynamically, I need to modify classpath of JVM at the time when I invoke java methods.
    How can I do this? I know that I can set up classpath when creating JVM in native code, but I need to start several java methods in only one JVM. The file name of jar file is unkonwn until get, so the classpath should be dynamically set every time the .jar file has come.
    Thanks in adv.
    swKeum

    You can't change the classpath. What you can do is either use an existing ClassLoader like URLClassLoader or write your own.
    God bless,
    -Toby Reyelts
    For a solution to all your JNI woes, check out Jace - http://jace.reyelts.com/jace

  • Cost involved in changing the code using log4j.properties to log4j.xml

    i have finished my application, and it was done in such a way that logging is done using log4j but it was using log4j.properties file.
    now i need to change it to log4j.xml. i need to do this at the earliest. so i need to know the cost involved in it?. do i need to change a lot on my app to read the log4j.xml?. In my app there is a function named getProperties, which actually reads the log4j.properties file.
    this is the code of that function
    public static Properties getProperties(String filename,String path) throws myException
    //InputStream is = null;
    FileInputStream is=null;
            Properties props = new Properties();       
            //ClassLoader classLoader = ResourceUtil.class.getClassLoader();
            //is = classLoader.getResourceAsStream(filename);
            File catalinaHome = new  File(System.getProperty("catalina.home"));     
            try {       
    is=new
    FileInputStream(catalinaHome.getCanonicalFile()+path + filename);
    } catch (IOException e) {
            if(is == null)
                String message = "Cannot locate property file " + filename + " in the classpath";
                log.error(message);
            throw new myException(message);
            try
                props.load(is);
            catch (IOException e)
                String message = "Error reading property file " + filename;
                log.error(message);
            throw new myException(message, e);
            finally
                try
                    is.close();
                catch(Throwable t)
                    t.printStackTrace();
            if(props.isEmpty())
                String message = "No properties are defined in " + filename;
                log.error(message);
            throw new myException(message);
            return props;       
    }and my initialize function is
    public static void initialize()
    Properties properties=null;
    try {
    String path="/properties/";
    properties=ResourceUtil.getProperties("log4j.properties",path);
    } catch (myException e2) {
    e2.printStackTrace();
    PropertyConfigurator.configure(properties);
    }Message was edited by:
    xema
    Message was edited by:
    xema
    Message was edited by:
    xema

    >
    1. Restructure log4j.properties into log4j.xml.
    thats done
    2. Move log4j.xml into a directory that's in the
    classpath.
    actually i donot understand what does it mean to move in a directory thats in classpath means. i have to use logging in my webapplication running in tomcat. and my log4j.xml has to reside in catalina.home/properties/. My log4j.properties have been residing here and it had worked well woth the previous function. Now what i did is placed the log4j.xml under properties folder. Now tell me what modifications should i make in the above code.
    3. Remove any code that explicitly configures log4j
    (i.e. the initialize() method) because log4j will
    configure itself from any properties file it finds in
    the classpath, automatically, the first time it is
    called.I prefer not remvoing this function as this function is being called in many of my classes... and we don't have time to edit all...
    please help... and excuse me if i asked some blunders.!!!

  • Apache Tomcat 7.0.4 can't recognize the classpath for .jar files

    Hiii Everybody,
    I have a weird problem. I am trying to develop a simple application where I am trying to pass an excel file name as an argument to a method and the method creates a copy of the specified file. I have used jxl.jar for excel file manipulation. During this I have faced two problems.......
    1) I tried to compile the file CopyExcel.java in the command prompt(windows), sometimes the file is not compiled and the error shown indicates that it can't recognize the package jxl. But if I close the command prompt window and open it again.... I could compile the CopyExcel.java succesfully with no error.
    2) Even if I have compiled the CopyExcell.java file successfully, whenever I am tryiyng to call a method copyMain() inside it, browser shows....
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception
    javax.servlet.ServletException: Servlet execution threw an exception
    root cause
    java.lang.NoClassDefFoundError: jxl/Workbook
         CopyExcel.copy(CopyExcel.java:39)
         CopyExcel.copyMain(CopyExcel.java:81)
         ServicePage.processRequest(ServicePage.java:28)
         ServicePage.doPost(ServicePage.java:73)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    root cause
    java.lang.ClassNotFoundException: jxl.Workbook
         org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672)
         org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517)
         java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
         CopyExcel.copy(CopyExcel.java:39)
         CopyExcel.copyMain(CopyExcel.java:81)
         ServicePage.processRequest(ServicePage.java:28)
         ServicePage.doPost(ServicePage.java:73)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.4 logs.
    --------------------------------------------------------------------------------The code for CopyExcel.java is as folows.............
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    * @author Administrator
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    import java.io.File;
    import java.io.IOException;
    import jxl.Cell;
    //import jxl.CellType;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    import jxl.write.WritableWorkbook;
    public class CopyExcel {
         private String inputFile;
         public void setInputFile(String inputFile) {
              this.inputFile = inputFile;
         public void copy() throws IOException  {
              File inputWorkbook = new File(inputFile);
              Workbook w;
                    try{
                        System.out.println("Before w= Workbook.getWorkbook(inputWorkbook);  ");
              w= Workbook.getWorkbook(inputWorkbook);
                     System.out.println("After w= Workbook.getWorkbook(inputWorkbook);  ");
              WritableWorkbook copy=Workbook.createWorkbook(new File("CopyPan.xls"), w);
                    copy.write();
                    copy.close();
                    }catch(Exception e){}
    /*          try {
                   w = Workbook.getWorkbook(inputWorkbook);
                   // Get the first sheet
                   Sheet sheet = w.getSheet(0);
                   // Loop over first 10 column and lines
                        for (int i = 1; i < 6; i++) {
                             Cell cell = sheet.getCell(0, i);
                             //CellType type = cell.getType();
                             //if (cell.getType() == CellType.LABEL) {
                                  //System.out.println("I got a label "
                                       //     + cell.getContents());
                             //if (cell.getType() == CellType.NUMBER) {
                                  //System.out.println("I got a number "
                                            //+ cell.getContents());
                                                    System.out.println(cell.getContents());
              } catch (BiffException e) {
                   e.printStackTrace();
         public static  String copyMain(String args) throws IOException {
              String str=args;
              CopyExcel test = new CopyExcel();
              test.setInputFile(args);
              test.copy();
                    return "Success";
    }I have set the "CLASSPATH" environment variables in "user variables for administrator" as follows,
    .;%SYSTEM%;C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.4\bin;C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.4\lib\servlet-api.jar;C:\Program Files\Java\jdk1.6.0_11\lib\jxl-2.6.jar Also I have tried editing the startup MS-dos batch file as folows....
    set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11
    set CLASSPATH=.;%SYSTEM%;C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.4\bin;C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.4\lib\servlet-api.jar;C:\Program Files\Java\jdk1.6.0_11\lib\jxl-2.6.jar
    @echo off
    rem Licensed to the Apache Software Foundation (ASF) under one or more
    rem contributor license agreements.  See the NOTICE file distributed with
    rem this work for additional information regarding copyright ownership.
    rem The ASF licenses thi..........But the problem remained...........
    Plz. help me.
    Thank u in advance for any help.

    Hiii Everybody,
    I have a weird problem. I am trying to develop a simple application where I am trying to pass an excel file name as an argument to a method and the method creates a copy of the specified file. I have used jxl.jar for excel file manipulation. During this I have faced two problems.......
    1) I tried to compile the file CopyExcel.java in the command prompt(windows), sometimes the file is not compiled and the error shown indicates that it can't recognize the package jxl. But if I close the command prompt window and open it again.... I could compile the CopyExcel.java succesfully with no error.
    2) Even if I have compiled the CopyExcell.java file successfully, whenever I am tryiyng to call a method copyMain() inside it, browser shows....
    description The server encountered an internal error () that prevented it from fulfilling this request.
    exception
    javax.servlet.ServletException: Servlet execution threw an exception
    root cause
    java.lang.NoClassDefFoundError: jxl/Workbook
         CopyExcel.copy(CopyExcel.java:39)
         CopyExcel.copyMain(CopyExcel.java:81)
         ServicePage.processRequest(ServicePage.java:28)
         ServicePage.doPost(ServicePage.java:73)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    root cause
    java.lang.ClassNotFoundException: jxl.Workbook
         org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1672)
         org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1517)
         java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
         CopyExcel.copy(CopyExcel.java:39)
         CopyExcel.copyMain(CopyExcel.java:81)
         ServicePage.processRequest(ServicePage.java:28)
         ServicePage.doPost(ServicePage.java:73)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
         javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    note The full stack trace of the root cause is available in the Apache Tomcat/7.0.4 logs.
    --------------------------------------------------------------------------------The code for CopyExcel.java is as folows.............
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    * @author Administrator
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    import java.io.File;
    import java.io.IOException;
    import jxl.Cell;
    //import jxl.CellType;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    import jxl.write.WritableWorkbook;
    public class CopyExcel {
         private String inputFile;
         public void setInputFile(String inputFile) {
              this.inputFile = inputFile;
         public void copy() throws IOException  {
              File inputWorkbook = new File(inputFile);
              Workbook w;
                    try{
                        System.out.println("Before w= Workbook.getWorkbook(inputWorkbook);  ");
              w= Workbook.getWorkbook(inputWorkbook);
                     System.out.println("After w= Workbook.getWorkbook(inputWorkbook);  ");
              WritableWorkbook copy=Workbook.createWorkbook(new File("CopyPan.xls"), w);
                    copy.write();
                    copy.close();
                    }catch(Exception e){}
    /*          try {
                   w = Workbook.getWorkbook(inputWorkbook);
                   // Get the first sheet
                   Sheet sheet = w.getSheet(0);
                   // Loop over first 10 column and lines
                        for (int i = 1; i < 6; i++) {
                             Cell cell = sheet.getCell(0, i);
                             //CellType type = cell.getType();
                             //if (cell.getType() == CellType.LABEL) {
                                  //System.out.println("I got a label "
                                       //     + cell.getContents());
                             //if (cell.getType() == CellType.NUMBER) {
                                  //System.out.println("I got a number "
                                            //+ cell.getContents());
                                                    System.out.println(cell.getContents());
              } catch (BiffException e) {
                   e.printStackTrace();
         public static  String copyMain(String args) throws IOException {
              String str=args;
              CopyExcel test = new CopyExcel();
              test.setInputFile(args);
              test.copy();
                    return "Success";
    }I have set the "CLASSPATH" environment variables in "user variables for administrator" as follows,
    .;%SYSTEM%;C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.4\bin;C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.4\lib\servlet-api.jar;C:\Program Files\Java\jdk1.6.0_11\lib\jxl-2.6.jar Also I have tried editing the startup MS-dos batch file as folows....
    set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_11
    set CLASSPATH=.;%SYSTEM%;C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.4\bin;C:\Program Files\Apache Software Foundation\apache-tomcat-7.0.4\lib\servlet-api.jar;C:\Program Files\Java\jdk1.6.0_11\lib\jxl-2.6.jar
    @echo off
    rem Licensed to the Apache Software Foundation (ASF) under one or more
    rem contributor license agreements.  See the NOTICE file distributed with
    rem this work for additional information regarding copyright ownership.
    rem The ASF licenses thi..........But the problem remained...........
    Plz. help me.
    Thank u in advance for any help.

  • Calling a newly deployed EJB from an EJB gives a NoSuchMethod Exception if the jar of the newly deployed ejb is not in the classpath

    Hi ,
    I have an EJB A which is already deployed when the server starts. A second ejb
    B is deployed at a later time.
    EJB A calls methods in EJB B. I use reflection in EJB A to call methods in EJB
    B.
    I get a NoSuchMethodException when I call the create method in the Home object
    of EJB B. If I add the ejb jar file to the classpath before the server starts
    then it is able to resolve the method.
    The problem is the EJBs which are called from EJB A is not known before the server
    is started. New EJBs can be deployed at runtime and EJB A should be able call
    the methods in newly deployed EJB's.
    I also use the URLClassLoader to load all the classes in the jar file of the newly
    deployed EJB in EJB A and it still gives a NoSuchMethodException because it cannot
    resolve the stub class.
    My error log is shown below.
    This is an urgent issue.
    Thanks
    SampleConnector::testEJBService called
    In Key : P1 Value : Input2
    In Key : P3 Value : Input1
    In Key : P2 Value : SomeConst
    Loaded Class = com.bizwave.samples.rejb.SampleRemote
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteEJB
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteEJB_svq1df_EOImpl
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteEJB_svq1df_HomeImpl
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteEJB_svq1df_Impl
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteHome
    java.lang.NoSuchMethodException
    at java.lang.Class.getMethod0(Native Method)
    at java.lang.Class.getDeclaredMethod(Class.java:1151)
    at com.bizwave.samples.ejb.SampleConnectorEJB.testEJBService(SampleCon
    ctorEJB.java:181)
    at com.bizwave.samples.ejb.SampleConnectorEJB_be5y1v_EOImpl.testEJBSer
    ce(SampleConnectorEJB_be5y1v_EOImpl.java:98)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.bizwave.fc.utils.ClassUtils.invokeEJBMethod(ClassUtils.java:109
    at com.bizwave.infra.fjet.engine.EJBServiceStepMgr.executeService(EJBS
    viceStepMgr.java:91)

    Hi,
    I am attaching a test case. This test case actually demonstrates a security bug.
    Unzip the file and modify the StartWeblogic.cmd in domainA to not refer to the
    SampleRemoteEJB.jar in the classpath. If u run the test client under the client
    dir u will see a NoSuchMethodException.
    The reason is it is not able to load the dynamically generated stub file.
    Initially I had the getMethod and it didn't work. You might have to modify the
    files to suit ur env. The easier way is to run th edomain wizard and create 2
    domains. Run the servers in development mode and place the jars under the applications
    dir
    Thanks
    Rajesh Mirchandani <[email protected]> wrote:
    Do you have any old EJB classes in your classpath? Did you recompile
    your EJBs if you
    upgraded from a old release or a Service pack?
    Bob Lee wrote:
    Hmmmm. That's an interesting problem.
    Why is it giving you a NoSuchMethodException instead of a
    ClassNotFoundException?
    Can you post the code from SampleConctorEJB.java, line 181?
    Try changing your call to getDeclaredMethod() to getMethod().
    getDeclaredMethod() searches only the class you called it on, whereas
    getMethod() traverses to the superclasses and interfaces. You onlyneed
    getDeclaredMethod() when you're accessing a nonpublic method.
    Not sure if this will help, but it's worth a shot.
    Bob
    Vasu wrote:
    Hi ,
    I have an EJB A which is already deployed when the server starts.
    A second ejb
    B is deployed at a later time.
    EJB A calls methods in EJB B. I use reflection in EJB A to call methodsin EJB
    B.
    I get a NoSuchMethodException when I call the create method in theHome object
    of EJB B. If I add the ejb jar file to the classpath before the serverstarts
    then it is able to resolve the method.
    The problem is the EJBs which are called from EJB A is not knownbefore the server
    is started. New EJBs can be deployed at runtime and EJB A shouldbe able call
    the methods in newly deployed EJB's.
    I also use the URLClassLoader to load all the classes in the jarfile of the newly
    deployed EJB in EJB A and it still gives a NoSuchMethodExceptionbecause it cannot
    resolve the stub class.
    My error log is shown below.
    This is an urgent issue.
    Thanks
    SampleConnector::testEJBService called
    In Key : P1 Value : Input2
    In Key : P3 Value : Input1
    In Key : P2 Value : SomeConst
    Loaded Class = com.bizwave.samples.rejb.SampleRemote
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteEJB
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteEJB_svq1df_EOImpl
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteEJB_svq1df_HomeImpl
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteEJB_svq1df_Impl
    Loaded Class = com.bizwave.samples.rejb.SampleRemoteHome
    java.lang.NoSuchMethodException
    at java.lang.Class.getMethod0(Native Method)
    at java.lang.Class.getDeclaredMethod(Class.java:1151)
    at com.bizwave.samples.ejb.SampleConnectorEJB.testEJBService(SampleCon
    ctorEJB.java:181)
    at com.bizwave.samples.ejb.SampleConnectorEJB_be5y1v_EOImpl.testEJBSer
    ce(SampleConnectorEJB_be5y1v_EOImpl.java:98)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.bizwave.fc.utils.ClassUtils.invokeEJBMethod(ClassUtils.java:109
    at com.bizwave.infra.fjet.engine.EJBServiceStepMgr.executeService(EJBS
    viceStepMgr.java:91)
    Rajesh Mirchandani
    Developer Relations Engineer
    BEA Support
    [user_projects.zip]

  • JUNIT test failure-Configuration file bc4j.xcfg not found in the classpath

    Hi All,
    As part of an ESS project,Im having a model project containing a VO(parameters VO).This VO is configured to have Read-only access through SQL query and have only one transient attribute each.For the model projects containing the VO for pre merge checker compliance I had to create JUNIT Test projects containing new AMs for testing the parametersVO. While running the JUNIT tests I got an exception like
    “oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.jbo.ConfigException, msg=JBO-33001: Configuration file /oracle/apps/hcm/goals/core/dataMigration/publicEssModel/test/applicationModule/common/bc4j.xcfg is not found in the classpath.”.—even though this file is contained in both the src/classes folder of the project.
    When i try to run the TestAM I'm getting an exception like 'configuration tester.xcfg not found in the calsspath.
    While debugging this error, we found that we are able to successfully run the JUNIT tests if we make some changes in the adf-config.xml file of the Application. The change required is to comment out the mdsC:adf-mds-config tag in the xml file.
    After doing this change Im also able to run my AM without any exception.
    Is this a known issue?.
    Since modifying the adf-config.xml is not a recommended practice is there any workaround that we can get rid of this exception.
    Regards,
    Ajin.

    Just checked but could only find this thread Unable to run ADFBC JUNIT Test Classes with JDEV11G 11.1.1.6
    As it's also dealing with junit and 11.1.1.6.0 you might want to read it.
    Timo

  • Configuration file bc4j.xcfg not found in the classpath.

    When i try to run an application that uses ADF BC i get an error telling me the bc4j.xcfg was not found.
    When i open my AppModule and click the bc4j.xcfg link it opens. When i look at the path it stored in, it is different from the path the error says.
    It's something like this:
    Configuration file /be/something/model/common/bc4j.xcfg is not found in the classpath
    but my appModule opens the bc4j.xcfg in a different folder:
    /be/something/utility/common/bc4j.xcfg
    It's a fact i modified the project and managed the packages a bit but i always used the refactor menu of jdeveloper in order to move or rename files.
    It appears that something has failed while moving/changing name.
    I looked inside my project to look for references for bc4j.xcfg but i can't find any so i can't see were to change the directory he needs to look for the bc4j file.
    How do i fix my project?

    John,
    In the DataBindings.cpx i can't find any reference to a datacontrol...
    This is my bindings:
    <?xml version="1.0" encoding="UTF-8" ?>
    <Application xmlns="http://xmlns.oracle.com/adfm/application"
                 version="11.1.1.56.60" id="DataBindings" SeparateXMLFiles="false"
                 Package="be.usermanagementProv.portlets" ClientType="Generic">
      <definitionFactories>
        <factory nameSpace="http://xmlns.oracle.com/adf/controller/binding"
                 className="oracle.adf.controller.internal.binding.TaskFlowBindingDefFactoryImpl"/>
        <dtfactory className="oracle.adf.controller.internal.dtrt.binding.BindingDTObjectFactory"/>
      </definitionFactories>
      <pageMap>
        <page path="/UserManagement/view.jspx"
              usageId="be_usermanagementProv_portlets_viewPageDef"/>
      </pageMap>
      <pageDefinitionUsages>
        <page id="be_usermanagementProv_portlets_viewPageDef"
              path="UserManagement.viewPageDef"/>
      </pageDefinitionUsages>
    </Application>In the datacontrol section when i right click the DC the "edit definition" is grayed out. Probably because the DC comes from the library and is not created in the application.

  • Services/common/bc4j.xcfg is not found in the classpath

    Hi Everyone,
    i have got one ADF application which has developed in Jdev 11G release 2.
    i have tried to run in my Jdev(Jdev 11G release1 11.1.1.5.0).
    it gave some errors regarding imports so i imported those missing jar files and application got comipled succesfully.
    When i run the application it shows me below error:
    <Utils> <buildFacesMessage> ADF: Adding the following JSF error message: Configuration file /com/sinter/gme/abc/services/common/bc4j.xcfg is not found in the classpath.
    oracle.jbo.ConfigException: JBO-33001: Configuration file /com/sinter/gme/abc/services/common/bc4j.xcfg is not found in the classpath.
    when i check that path in my project its there till "/com/sinter/gme/abc/services" and "/common/bc4j.xcfg" is not there.
    the same appliaction is running fine in server after deploying. but i need to change some things and redeploy it but it is not running as expected.
    Please help me to get out of this.
    Any suggestions.
    Thanks.

    Add Model to ViewController as dependency(right click Model--> Dependencies-->use custom setting), add dependency with "Edit dependencies".

  • Error Configuration File bc4j.xcfg is not found in the classpath

    I am new to JDeveloper and ADF, and am suffering through the steep learning curve. This story may prove useful to someone, someday.
    I just finished resolving a “bc4j.xcfg is not found in the classpath” error and it added another level of understanding to how things are glued together.
    There is a back story. I had made a first pass at creating a test application. When I was done I started “enhancing” the application. One of the changes was to add a column to a view in the database. Try as I might I could not get that change propagated to the business component. This is still on my to-figure-out list. In frustration I dropped the model and recreated it from the database tables and views. Testing it with the “AppModule” in the model project I could see the view with the new column. However, when I went to run one of my old jspx pages, I now got the dreaded “bc4j.xcfg is not found in the classpath” – and this was for a page that was not using my updated view. As the military expression goes, “Whiskey Tango Foxtrot”.
    It is now working again, and here is what I found.
    I noticed in the error message that it could not find “/cloudapp1/common/bc4j.xcfg”. When I searched for the file I found it in /cloudapp1/model/common/bc4j.xcfg. I went to the project properties for the model project and on the “Project Source Paths” node I saw at the bottom of the page Default Package: cloudapp1.model. Ah Ha! That is where the /cloudapp1/model structure came from. Then I remembered that the first time through I had changed the default package to just cloudapp1. Part of my experimenting with the product. When I quickly rebuilt the model project I did not do that.
    Next I found the DataBindings.cpx that one note alluded to. It is in the ViewController project. There I found an “OC4JDataControl” section. In there was and entry Package=”cloudapp1”. This was the original package name. When I rebuilt the model, this was not updated. Anyway, I changed it to Package=”cloudapp1.model”. [ Insight:  When you first build an app it can make some good guesses about what is needed, but when you start adding and dropping projects it is much harder to guess how they are glued together.]
    Raising a cup of coffee in triumph I re-ran the test page.
    Dang! Still a bc4j.xcfg not found in the classpath – but this time the path mentioned matched the path where I knew the file to be.
    I am nothing if not stubborn. I knew the problem just had to be in the ViewController project, because the AppModule in the model project worked. So, I started going through all of the project properties. I finally came across something called “Dependencies” that had big ugly red circles with an x in them. Ah ha. This is what tells the ViewController what other projects (like the business model project) this ViewController is dependent on. Although the editing process it not obvious I eventually pointed it to the new model project. [Deepening insight.]
    When I re-ran the test page it worked! Coffee finished. Story with a happy ending.
    Summary:
    1.     Make sure the package name in the ViewController DataBindings.cpx matches the one in your model project.
    2.     Make sure the ViewController Dependencies entry points to the model project.

    Thought I'd add a little bit more to this post I found helpful.
    I'm creating an application which uses other application ViewController projects deployed as library .jar files. If your .jar ViewController project deployment profiles don't have your Model project as a dependency, you will get the .bc4j error as well.
    This can be confusing when the ViewController pages function correctly when run within their own application context, but somehow lose their bc4j when deployed as a .jar.
    Hope that helps someone down the road.

  • How do i set the classpath in weblogic server

    hi,
    i am using weblogic SP2. in my application, i have some jars in the lib directory. currently my application is running fine. but when i add some new jars, it is throwing some exception. i guess that it may be because that in the classpath, these new jars might be before the other jars. how can i view the classpath and change it.
    thanks,
    prashant.

    java.net.URL urldir= new java.net.URL("file://C:/Downloads/");
    java.net.URL[] urlarr= new java.net.URL[1];
    urlarr[0]=urldir;
    java.net.URLClassLoader urlcl= new java.net.URLClassLoader(urlarr); +// Here I get the Error+
    url=urlcl.getResource("/lrp/utils/New.gif");
    *Error: java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • To change the JDBC driver for a single OC4J instance

    Hello,
    I implemeted an app with oracle adf (Jdeveloper 10.1.2 ) and it use Oracle Domain objects.
    I have an oas 10g (9.04.1) in windows
    and I want to change the default jdbc driver for a single oc4j instance
    in metalink i found the following information:
    1.- From OTN, download and copy the 10.1.0.x JDBC driver to a directory on the server. E.g OH/newjdbc
    2.- Opening EM-Website, navigate to the OC4J instance that should be altered.
    3.- Find the "Java-Options" and, add the -Xbootclasspath option to it, pointing to the new JDBC driver.
    E.g. -Xbootclasspath/p:$OH/newjdbc/ojdbc14.jar
    4.- Restart the OC4J instance
    my 'Java-optios' default is
    -server -Xrs -Djava.security.policy=C:\oracle\904\j2ee\test_adf\config\java2.policy -Djava.awt.headless=true
    my new 'Java optios' now is
    -server -Xrs -Djava.security.policy=C:\oracle\904\j2ee\test_adf\config\java2.policy -Djava.awt.headless=true -Xbootclasspath/p = D:\jdev1012\jdbc\lib\classes12.jar
    is this correct?
    now I cannot deploy my app
    Rigoberto

    Seems you missed something in step 3. From those steps the driver should be installed under C:\oracle\904\newjdbc and used in classpath, not d:\jdev1012.

  • How to change the defaut xmlparser on OC4J Standalone 10.1.3.4 for Spring 3

    Hi All
    I am trying to use OC4J 10.1.3.4 standalone with Spring 3.0 but I keep getting the error
    nested exception is oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'It worked fine when I was using Spring 2.5.6
    I have tried to change the parser as described here (http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-swapxmlparser/doc/readme.html). This is not quite ideal as I want to change the parser for the whole server and not just one application and besides, If I cant start the server, I will not be able to change the parser for an application anyway. I say this because the default xml parser (xmlparserV2.jar) throws an exeception if you try to use it with Spring 3.0 i.e.
    nested exception is oracle.xml.parser.schema.XSDException: Duplicated definition for: 'identifiedType'I have had a look on them Oracle Forums(How can I use a 3rd party XML parser such as xerces with OC4J ? and Spring forums and appararently you have to change the XML parser (because the oracle xml parser is buggy!!) by puting the Xerces parser(or any other parser for that matter) on the classpath and then using the following switch
    java -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Xbootclasspath/a:C:\Miscellaneous\xercesImpl.jar -jar oc4j.jarHowever, when I try and start OC4J, I get the following error and I have no idea how to solve this. I have been at this for a couple of weeks but I still not getting any joy.
    [Fatal Error] :-1:-1: Premature end of file.
    2010-01-07 10:29:06.881 ERROR J2EE JCA-01006 Error initializing an ApplicationConnectionManager - ConnectorArchive and Application cannot be null
    2010-01-07 10:29:06.881 ERROR J2EE JCA-01004 {0}
    2010-01-07 10:29:06.881 WARNING J2EE JCA-01013 Error (Error setting JavaBean property 'managedDataSourceConfigXML' for ManagedConnectionFactory class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl for standalone resource adapter 'Oracle JDBC Resource Adapter'. Exception is: java.lang.reflect.InvocationTargetException) while setting up RA for MCF (oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl) for standalone resource adapter 'Oracle JDBC Resource Adapter'
    2010-01-07 10:29:06.881 ERROR J2EE OJR-00105 Exception creating Managed DataSource ConnectorPropertySet.  Exception: Error setting up resource adapter for standalone resource adapter 'Oracle JDBC Resource Adapter'. ManagedConnectionFactory implementation class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl' cannot be set up: Error setting JavaBean property 'managedDataSourceConfigXML' for ManagedConnectionFactory class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl for standalone resource adapter 'Oracle JDBC Resource Adapter'. Exception is: java.lang.reflect.InvocationTargetException
    10/01/07 10:29:06 SEVERE: ApplicationStateRunning.initConnector Error occurred initializing connectors.  Exception is: Exception creating Managed DataSource ConnectorPropertySet.  Exception: Error setting up resource adapter for standalone resource adapter 'Oracle JDBC Resource Adapter'. ManagedConnectionFactory implementation class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl' cannot be set up: Error setting JavaBean property 'managedDataSourceConfigXML' for ManagedConnectionFactory class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl for standalone resource adapter 'Oracle JDBC Resource Adapter'. Exception is: java.lang.reflect.InvocationTargetException
    10/01/07 10:29:06 SEVERE: ApplicationStateRunning.initConnector Stack trace: oracle.oc4j.sql.DataSourceException: Exception creating Managed DataSource ConnectorPropertySet.  Exception: Error setting up resource adapter for standalone resource adapter 'Oracle JDBC Resource Adapter'. ManagedConnectionFactory implementation class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl' cannot be set up: Error setting JavaBean property 'managedDataSourceConfigXML' for ManagedConnectionFactory class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl for standalone resource adapter 'Oracle JDBC Resource Adapter'. Exception is: java.lang.reflect.InvocationTargetException
         at com.evermind.server.ApplicationStateRunning.addConnectionFactory(ApplicationStateRunning.java:1623)
         at com.evermind.server.ApplicationStateRunning.initManagedDataSource(ApplicationStateRunning.java:1573)
         at com.evermind.server.ApplicationStateRunning.initDataSourceConnector(ApplicationStateRunning.java:2042)
         at com.evermind.server.ApplicationStateRunning.initConnector(ApplicationStateRunning.java:1287)
         at com.evermind.server.ApplicationStateRunning.initConnectors(ApplicationStateRunning.java:362)
         at com.evermind.server.ApplicationStateRunning.initializeApplication(ApplicationStateRunning.java:220)
         at com.evermind.server.Application.setConfig(Application.java:454)
         at com.evermind.server.Application.setConfig(Application.java:355)
         at com.evermind.server.ApplicationServer.initializeDefaultApplication(ApplicationServer.java:1603)
         at com.evermind.server.ApplicationServer.initializeAutoDeployedApplications(ApplicationServer.java:1586)
         at com.evermind.server.ApplicationServer.setConfig(ApplicationServer.java:1018)
         at com.evermind.server.ApplicationServerLauncher.run(ApplicationServerLauncher.java:131)
         at java.lang.Thread.run(Thread.java:595)
    Caused by: java.lang.InstantiationException: Error setting up resource adapter for standalone resource adapter 'Oracle JDBC Resource Adapter'. ManagedConnectionFactory implementation class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl' cannot be set up: Error setting JavaBean property 'managedDataSourceConfigXML' for ManagedConnectionFactory class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl for standalone resource adapter 'Oracle JDBC Resource Adapter'. Exception is: java.lang.reflect.InvocationTargetException
         at com.evermind.server.connector.ApplicationConnectionManager.initOutbound(ApplicationConnectionManager.java:909)
         at com.evermind.server.connector.ApplicationConnectionManager.init(ApplicationConnectionManager.java:314)
         at com.evermind.server.connector.deployment.ConnectorArchive.createConnectionManager(ConnectorArchive.java:1178)
         at com.evermind.server.connector.deployment.ConnectorArchive.addConnectionFactory(ConnectorArchive.java:662)
         at com.evermind.server.ApplicationStateRunning.addConnectionFactory(ApplicationStateRunning.java:1616)
         ... 12 more
    10/01/07 10:29:06 WARNING: Application.setConfig Application: default is in failed state as initialization failed.
    java.lang.InstantiationException: Error occurred initializing connectors.  Exception is: Exception creating Managed DataSource ConnectorPropertySet.  Exception: Error setting up resource adapter for standalone resource adapter 'Oracle JDBC Resource Adapter'. ManagedConnectionFactory implementation class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl' cannot be set up: Error setting JavaBean property 'managedDataSourceConfigXML' for ManagedConnectionFactory class 'oracle.oc4j.sql.spi.ManagedConnectionFactoryImpl for standalone resource adapter 'Oracle JDBC Resource Adapter'. Exception is: java.lang.reflect.InvocationTargetException
    10/01/07 10:29:06 Error initializing server: Application: default is in failed state as initialization failed
    10/01/07 10:29:07 Fatal error: server exitingCan anyone help or show me how to change the xml parser please ?
    Thanks in advance!!

    Hi All,
    I have found a way to change the xml parser for my application and NOT the xml parser for the server. I followed the instructions here http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-swapxmlparser/doc/readme.html. In the end, I had to settle for changing the xml parser of my application(i.e. It uses its a custom parser e.g. xerces not the default OC4J parser i.e. xmlparserV2) and not the xml parser for OC4J because it was near impossible to change the xml parser for OC4J and besides, as the OC4J default parser(xmlparserV2) works well with the server and not my application, it made more sense to change the parser for my application (changed to Xerces) and not OC4J. Hope this helps someone else who may come across a similar problem.

Maybe you are looking for