Compliant J2EE/EJB class file packaging...

Hi,
I've just come across some commerical components which are packaged slightly strangely and I'd like to find out if their approach is J2EE compliant.
The components are EJBs which are packed into several EJB module archives (.jars) inside a main application archive (.ear). The interesting thing is, inside each EJB module .jar, they have packaged the .class files into several ordinary .jar files and added those .jars into the EJB .jar, rather than simply adding the classes to the EJB .jar itself. My question is, is this compliant?
Are application server classloaders suppsed to automatically open such embedded .jars and make the classes available to the container at runtime? I don't think so but I have been assured by the vendor in question that this is compliant (and runs in the J2EE 1.2 RI which I havn't tested).
There are no directives, either in the J2EE deployment descriptors or .jar Manifests which can be used to indicate that the 'inner' .jar files should be unpacked. The Class-Path Manifest attribute can be used to point to other jars using a relative URI but I don't believe it can be used to point to .jars inside the referencing .jar. (In any case, this vendor isn't using a Class-Path attribute)
Any thoughts appreciated!
Regards,
John.

>
Nesting .jar's has always been perfectly proper, It has? I've certainly never seen anything like this in my past java programming experience. Can you give me some examples or references to the J2SE or J2EE specifications that back up this assertion?
I believe J2SE doesn't allow you to simply place different classes in different jars, then nest those jars inside each other and expect a standard ClassLoader to be able to load the classes from the correct location at runtime. Try it, you'll see that doesn't work. I can see nothing in the J2EE spec that says that a J2EE appserver has to go looking into these nested jars.
why
do you believe that ejb-jar do not support this ?Quite simply because there are no references to "nesting" jars in the specification, beyond
a) nesting J2EE modules (.jar, .war and .rar files) inside J2EE application .ear files
and
b) nesting required libraries in "WEB-INF/lib" location of a .war file.
Both of these cases are explicitly defined in the specification but I don't believe there is any support for "general" nesting or Jars.

Similar Messages

  • Error Msg - "You must add the Class files for this enterprise bean"

    Hi,
    I am creating creating new enterprise bean using j2sdkee1.2. I am able to create .ear file in desired folder, but can not create .jar. Please help. Getting above error message.
    remote, home interface files and file having business logic (EJB) is compiled and kept at desired location.
    j2ee server started, Deploytool is started.
    Then I can successfully create new application (.ear file)
    Then I go for creating new enterprise bean. I get same application name in Drop down list named "Enterprise Bean will go in".
    Then I can add home, remote and ejb class file to create jar ("Add" under "Contents" ).
    When I say ok after adding these 3 files, I am getting error - "You must add the Class files for this enterprise bean".
    In the deploytool console, getting error - "java.io.FileNotFoundException: C:\2sdkee1.2\mahesh\ConverterEJB.class (The system cannot find the path specified) "
    Can you please help me where to configure the path?
    Can u please help?
    Please send your answer to - [email protected]
    Cheers!

    the path really begins with '2', without a 'j', ie not c:\j2sdkee1.2\...?
    "java.io.FileNotFoundException:
    C:\2sdkee1.2\mahesh\ConverterEJB.class (The system
    cannot find the path specified) "

  • For every import ,there should be class file

    suppose, i have written some servlets and complied .
    Their class files will be placed in their packages.
    does we need to set class path for those classes?
    i think that ,those classes we are using i.e weblogic.jar or rowset.jar for them we have to set the class path.
    but why do we need ,for our classes ,need to set.It will check in web-inf ->classes
    please clear information

    suppose, i have written some servlets and complied .
    Their class files will be placed in their packages.
    does we need to set class path for those classes?No. Because your app server will take care of that anyway.
    i think that ,those classes we are using i.e
    weblogic.jar or rowset.jar for them we have to set
    the class path.No.
    but why do we need ,for our classes ,need to set.It
    will check in web-inf ->classes
    please clear informationAll you need to do is to create a bundle (WAR, EAR) with all the JARs you need. What you're doing might not work because you're also relying on JARs you're notnecessarily supposed to use and that aren't provided to you by the app server.

  • Program File/Class File

    Am trying to get Program File and Class File to
    communication. I get this error message:
    A file found in a source-path must have the same package
    structure as the definitions package “Nproj”.
    Any suggestions? I would so appreciate it.
    The Class File is in the folder “Nproj’.
    Program File:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml"
    layout="absolute">
    <mx:Script>
    <![CDATA[
    import Nproj.Product;
    var myProduct = new Product();
    myProduct.setDesc("Teddy Bear");
    trace(myProduct.getDesc());
    ]]>
    </mx:Script>
    </mx:Application>
    Class File:
    package Nproj
    public class Product {
    var desc:String;
    public function Product() {
    public function getDesc():String {
    return desc;
    public function setDesc(myVar:String):void {
    desc = myVar;
    Thanks,
    BudHud

    "BudHud" <[email protected]> wrote in
    message
    news:g9ndhf$knm$[email protected]..
    > Am trying to get Program File and Class File to
    communication. I get this
    > error message:
    >
    > A file found in a source-path must have the same package
    structure as the
    > definitions package ?Nproj?.
    People googling on that text quite often wind up on this page
    of my blog:
    http://flexdiary.blogspot.com/2008/03/importing-packages-in-as3.html
    HTH;
    Amy

  • Placing class files for servlets in j2ee

    i am new to java servlets. i recently installed j2ee v1.4 sdk. i have gotten my first file that imports packages to compile. i now need a path to place .class files and .jar files. everyone says web-inf/classes and web/lib. due to the directory structure paths are so long. can someone give me the right path in j2ee v1.4 (C:\Sun\Appserver) to place these .class files and .jar files. if there is anything else i need to do before i can run a servlet, please inform me. i just want to run this silly helloWorld servlet. any suggestions would be greatly appreciated.

    Hi rickjamesb_tch,
    What you have heard is correct - you need to place your class files in the WEB-INF's classes directory (or jar files in the lib directory).
    To give you a little background, J2EE servers use custom ClassLoaders (a set of Java Classes that actually load the class into the JVM). The top-level class loaders has classes that are accessible through the JVM (and are usually picked up from the classpath).
    The other class loaders load classes that are only accessible within a particular web (or enterprise) application. These classloaders pick classes from the WEB-INF directory. These classloaders also have the capability of dynamically re-loading classes (eg when you change your .jsp file). Finally, the classes loaded are only visible within the web-application so that they do not pollute the global namespace.
    Hope that helps.
    Of course, the J2EE specification goes into a lot of depth about class loading, but unless you are designing an application server, you need not understand those details and specifics - just understanding where to place your classes is enough.

  • EJB:Error in adding class file in JAR

    Hi im doing project in EJB
    when i add class files to JAR this type error occurs
    Pls help in need of help

    Generally WEB-INF\classes\ is for compiled classes.
    You should move your java source files to say SecondWap\src\com\hclasses to match up with your package name in your ajva file.

  • Downloading packages and class files

    Hi Friends
    I have a query regarding downloading packages . I have a LdapHelper class defined in a package of com.beasys.commerce.bridge.ldap of wls 2.0 version . I want that package to be imported to my wls of 8.1 version . Is this feasible ? . Can i download Package files as such . If so how ? .
    thanks in advance
    Samia

    -------- Original Message --------
    Subject: [Fwd: downloading packages and class files]
    Date: Wed, 19 Jan 2005 13:14:24 -0700
    From: Jim Litton <[email protected]>
    Newsgroups: weblogic.developer.interest.portal
    Samia,
    It would probably be best to rewrite your application to take advantage
    of the 8.1 versions of Weblogic authentication and Portal property
    management.
    In 8.1 Portal :
    1. has an Authentication class where we basically use
    weblogic.servlet.security.ServletAuthentication.weak(username, password,
    request).
    http://e-docs.bea.com/wlp/docs81/javadoc/com/bea/p13n/security/Authentication.html
    2. has a AtnManagerProxy class where we check user existence and member
    of, have methods to add remove users and groups, etc.
    http://e-docs.bea.com/wlp/docs81/javadoc/com/bea/p13n/security/management/authentication/AtnManagerProxy.html
    3. has a LdapPropertyManager EJB which is configurable through the
    p13n_ejb.jar deployment descriptors (ejb-jar.xml and
    weblogic-ejb-jar.xml) for retrieving user properties from an LDAP
    Directory Server.
    In 7.0+ and 8.1 Weblogic Server a new more flexible security provider
    framework was added to permit more flexible use of multiple security
    stores, perimeter authentication, and role mapping.
    Samia Rahumani wrote:
    Hi Friends
    I have a query regarding downloading packages . I have a LdapHelper class defined in a package of com.beasys.commerce.bridge.ldap of wls 2.0 version . I want that package to be imported to my wls of 8.1 version . Is this feasible ? . Can i download Package files as such . If so how ? .
    thanks in advance
    Samia

  • Calling actionscript file package classes

    I have composed a simple actionscript class called "test.as"
    under this directory \project\as\test\.
    The test.as class is packaged as "package as.test".
    In my main flex file main.mxml, how can reference this
    test.as class without getting a complied error by not packaging up
    the package as "package project.as.test"? Any approaches to this
    problem? I know in java it can be done with Jar package.

    quote:
    Originally posted by:
    MR Fang
    Sorry if I didn't communicate clear on my original question.
    Let me reintegrate my question on the actionscript package.
    If I created an actionscript file and main.mxml under these
    directory,
    \project\as\utils\features\test.as
    \project\main.mxml
    and in the test.as, I packaged the file as strictly below
    package utils.features
    { public class Test.{...blab...blab...}}
    Is it possible to reference the "test.as" class without
    explicitly using package directory as
    package as.utils.features?
    Will this create a problem when I call this class from the
    "main.mxml"? How do I manage to compile and use this type of
    package structure?
    Thanks,
    Fang
    in your MXML you would say...
    <mx:Script>
    <CDATA....
    import project.as.utils.features.test;
    private var myClassInstance:test = new test();
    ]]>
    </mx:Script>
    or... if test.as extended something like a <mx:Button/>
    you can do something like this..
    In your MXML, in the Application tag add...
    <mx:Application ...
    xmlns:myCustomNS="project.as.utils.features.*" >
    <myCustomNS:test />
    </mx:Application>

  • How to call a class file in a jsp without deploying anything in j2ee

    Hi,
    I am new in J2EE. I have some jsps, which I configured using web.properties(documentroot=c:/jsp/). I am able to get
    those pages by the web browser. I have some import statements in some jsps, now I
    am trying to access those page but it is failing, it says
    org.apache.jasper.JasperException: Unable to compile class for
    JSPD:\j2sdkee1.3\repository\pradip\web\_0002fLogin_0002ejspLogin_jsp_0.java:1:
    Class com.gui.UPMGuiGlobalConstants not found in import.
    import com.gui.UPMGuiGlobalConstants;
    Actually I have not deployed any class file or jsps.. Now my question is can I access
    these jsps without deploying anything, like can I put my .jar file in any j2ee
    directory(like lib or anywhere else, I already tried after putting in /lib) and restart the
    j2ee and use it. So how can I call a class file from a jsp without any kind of
    deployment?
    Please send me the reply as soon as possible.
    Regds,
    Pradip

    After you put the jar containing the class to import into the WEB-INF/lib directory, you still need to include it in the jsp.
    Putting the jar into the lib dir, will make it available to the vm, but as in any other java class, you still need to import it into the class, that the jsp will be compiled into.
    And you do that by putting
    <%@page import="com.gui.UPMGuiGlobalConstants" %>somewhere near the top of your jsp. (well you don't need to put it there, but it good style ;)
    That should do it.

  • How do I make a batch file if the .class file uses a foreign package?

    I am trying to make an MS-DOS batch file using the bytecode file from the Java source file, called AddFields.java. This program uses the package BreezySwing; which is not standard with the JDK. I had to download it seperately. I will come back to this batch file later.
    But first, in order to prove the concept, I created a Java file called Soap.java in JCreator. It is a very simple GUI program that uses the javax.swing package; which does come with the JDK. The JDK is currently stored in the following directory: C:\Program Files\Java\jdk1.6.0_07. I have the PATH environment variable set to the 'bin' folder of the JDK. I believe that it is important that this variable stay this way because C:\Program Files\Java\jdk1.6.0_07\bin is where the file 'java.exe' and 'javac.exe' are stored. Here is my batch file so far for Soap:
    @echo off
    cd \acorn
    set path=C:\Program Files\Java\jdk1.6.0_07\bin
    set classpath=.
    java Soap
    pause
    Before I ran this file, I compiled Soap.java in my IDE and then ran it successfully. Then I moved the .class file to the directory C:\acorn. I put NOTHING ELSE in this folder. then I told the computer where to find the file 'java.exe' which I know is needed for execution of the .class file. I put the above text in Notepad and then saved it as Soap.bat onto my desktop. When I double click on it, the command prompt comes up in a little green box for a few seconds, and then the GUI opens and says "It Works!". Now that I know the concept of batch files, I tried creating another one that used the BreezySwing package.
    After I installed my JDK, I installed BreezySwing and TerminalIO which are two foreign packages that make building code much easier. I downloaded the .zip file from Lambert and Osborne called BreezySwingAndTerminalIO.zip. I extracted the files to the 'bin' folder of my JDK. Once I did this, and set the PATH environment variable to the 'bin' folder of my JDK, all BreezySwing and TerminalIO programs that I made worked. Now I wanted to make a batch file from the program AddFields.java. It is a GUI program that imports two packages, the traditional GUI javax.swing package and the foreign package BreezySwing. The user enters two numbers in two DoubleField objects and then selects one of four buttons; one for each arithmetic operation (add, subtract, multiply, or divide). Then the program displays the solution in a third DoubleField object. This program both compiles and runs successfully in JCreator. So, next I moved the .class file from the MyProjects folder that JCreator uses to C:\acorn. I put nothing else in this folder. The file Soap.class was still in there, but I did not think it would matter. Then I created the batch file:
    @echo off
    cd \acorn
    set path=C:\Program Files\Java\jdk1.6.0_07\bin
    set classpath=.
    java AddFields
    pause
    As you can see, it is exactly the same as the one for Soap. I made this file in Notepad and called it AddFields.bat. Upon double clicking on the file, I got this error message from command prompt:
    Exception in thread "main" java.lang.NoClassDefFoundError: BreezySwing/GBFrame
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
    4)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    Caused by: java.lang.ClassNotFoundException: BreezySwing.GBFrame
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    ... 12 more
    Press any key to continue . . .
    I know that most of this makes no sense; but that it only means that it cannot find the class BreezySwing or GBFrame (which AddFields extends). Notice, however that it does not give an error for javax.swing. If I change the "set path..." command to anything other than the 'bin' folder of my JDK, I get this error:
    'java' is not recognized as an internal or external command,
    operable program or batch file.
    Press any key to continue . . .
    I know this means that the computer cannot find the file 'java.exe' which I believe holds all of the java.x.y.z style packages (native packages); but not BreezySwing or any other foreign packages. Remember, I do not get this error for any of the native Java packages. I decided to compare the java.x.y.z packages with BreezySwing:
    I see that all of the native packages are not actually visible in the JDK's bin folder. I think that they are all stored in one of the .exe files in there because there are no .class files in the JDK's bin folder.
    However, BreezySwing is different, there is no such file called "BreezySwing.exe"; there are just about 20 .class files all with names like "GBFrame.class", and "GBActionListener.class". As a last effort, I moved all of these .class files directly into the bin folder (they were originally in a seperate folder called BreezySwingAndTerminalIO). This did nothing; even with all of the files in the same folder as java.exe.
    So my question is: What do I need to do to get the BreezySwing package recognized on my computer? Is there possibly a download for a file called "BreezySwing.exe" somewhere that would be similar to "java.exe" and contain all of the BreezySwing packages?

    There is a lot of detail in your posts. I won't properly quote everything you put (too laborious). Instead I'll just put your words inside quotes (").
    "..there are some things about the interface that I do not like."
    Like +what?+ This is not a help desk, and I would appreciate you participating in this discussion by providing details of what it is about the 'interface' of webstart that you 'do not like'. They are probably misunderstandings on your part.
    "Some of the .jar files I made were so dangerously corrupt, that I had to restart my computer before I could delete them."
    Corrupt?! I have never once had the Java tools produce a corrupt Jar. OTOH, the 'cannot delete' problem might relate to the JRE gaining a file lock on the archive at run-time. If the file lock persisted after ending the app., it suggests that the JRE was not properly shut down. This is a bug in the code and should be fixed. Deploying as .class files will only 'hide' the problem (from casual inspection - though the Task Manager should show the orphaned 'java' process).
    "I then turned to batch files for their simple structure and portability (I managed to successfully transport a java.util containing batch file from my computer to another). This was what I did:
    - I created a folder called Task
    - Then I copied three things into this folder: 1. The file "java.exe" from my JDK. 2. The program's .class file (Count.class). and 3. The original batch file.
    - Then I moved the folder from a removable disk to the second computer's C drive (C:\Task).
    - Last, I changed the code in the batch file...:"
    That is the +funniest+ thing I've heard on the forums in the last 72 hours. You say that is easy?! Some points.
    - editing batch files is not scalable to 100+ machines, let alone 10000+.
    - The fact that Java worked on the target machine was because it was +already installed.+ Dragging the 'java.exe' onto a Windows PC which has no Java will not magically make it 'Java enabled'.
    And speaking of Java on the client machine. Webstart has in-built mechanisms to ensure that the end user has the minimum required Java version to run the app. - we can also use the [deployJava.js|http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html#deplToolkit] on the original web page, to check for minimum Java before it puts the link to download/install the app. - if the user does not have the required Java, the script should guide them through installing it.
    Those nice features in deployJava.js are available to applets and apps. launched using webstart, but they are not available for (plain) Jar's or loose class files. So if 'ensuring the user has Java' is one of the requirements for your launch, you are barking up the wrong tree by deploying loose class files.
    Note also that if you abandon webstart, but have your app. set up to work from a Jar, the installation process would be similar to above (though it would not need a .bat file, or editing it). This basic strategy is one way that I provide [Appleteer (as a downloadable ZIP archive)|http://pscode.org/appleteer/#download]. Though I side-step your part 1 by putting the stuff into a Jar with the path Appleteer/ - when the user expands the ZIP, the parts of the app. are already in the Appleteer directory.
    Appleteer is also provided as a webstart launched application (and as an applet). Either of those are 'easier' to use than the downloadable ZIP, but I thought I would provide it in case the end user wants to save it to disk and transport the app. to a machine with no internet connection, but with Java (why they would be testing applets on a PC with no internet connection, I am not sure - but the option is there).
    "I know that .jar and .exe files are out because I always get errors and I do not like their interfaces. "
    What on earth are you talking about? Once the app. is on-screen, the end user would not be able to distinguish between
    1) A Jar launched using a manifest.
    2) A Jar launched using webstart.
    3) Loose class files.
    Your fixation on .bat files sounds much like the adage that 'If the only tool you have is a hammer, every job starts to look like a nail'.
    Get over them, will you? +Using .bat files is not a practical way to provide a Java app. to the end user+ (and launching an app. from a .bat looks quite crappy and 'second hand' to +this+ user).
    Edit 1:
    The instructions for running Appleteer as a Jar are further up the page, in the [Running Appleteer: Application|http://pscode.org/appleteer/#application] section.
    Edited by: AndrewThompson64 on May 19, 2009 12:06 PM

  • How to access a class file outside the package?

    created a two java files Counter.java and TestCounter.java as shown below:
    public class Counter
         public void print()
              System.out.println("counter");
    package foo;
    public class TestCounter
         public static void main(String args[])
              Counter c = new Counter();
              c.print();
    Both these files are stored under "D:\Test". I first compiled Counter.java and got Counter.class which resides in folder "D:\Test"
    when i compile TestCounter.java i got the following error message:
    D:\Test>javac -classpath "d:\Test" -d "d:\Test" TestCounter.java
    TestCounter.java:6: cannot find symbol
    symbol : class Counter
    location: class foo.TestCounter
    Counter c = new Counter();
    ^
    TestCounter.java:6: cannot find symbol
    symbol : class Counter
    location: class foo.TestCounter
    Counter c = new Counter();
    ^
    2 errors
    what could be the problem. Is it possible to access a class file outside the package?

    ya that's fine..if we have two java files where both resides in the same package works fine or two java files which donot have a package statement also works fine. But my doubt is, i have a Counter.class which does not reside in a package and i have a TestCounter.class which resides in a package "foo", in such a scenario, how do i tell to the compiler that "Counter.class resides in such a path, please look at that and give me TestCounter.class". i cannot use import statement to import Counter.class in TestCounter.java because i donot have a package for Counter.java.

  • How to save library symbols' class files in packages that are not the default package?

    Hi,
    I perform the following in Flash CS5 with Flash Builder 4
    1) Create a new library symbol.
    2) Do a RightClick->Properties on the new symbol
    3) Check the options for "Export for ActionScript" and "Export in frame 1".
    4) I write a new name for my class "Class1" and click on the pencil icon "edit class definition" to edit the class.
    At this point my FlashBuilder 4 takes over and opens the "New ActionScript" dialog.
    4) I then click on Package-Browse to select a package e.g. com.mycompany.myfiles as the new class destination.
    The as file is created as com.mycompany.myfiles/Class1.as as everything seems just fine.
    5) I close the ActionScript file and back in Flash CS5 I RightClick on the symbol and select "Edit Class".
    At this time, FB4 suggests again to create the file, ignoring the fact that I already created it before.
    Do you know of a way I can make Flash CS5 remember where I created the file?
    Thanks.

    Hi,
    I didn't remove the project or delete any of the files.
    All I did was create the class file under a package that is not the default package. Then when I clicked on the Flash symbol's "Edit Class" It asked me again to create the same class file.
    Only if I create the class in the default package, it won't ask me to recreate it again.
    Bye,
      RaamEE-IL

  • Where to place the class file of the java bean when using the packager

    I am using the activex bridge in j2se 1.5.0_06
    now i have created the jar file for my bean but where do i place the class file?
    i.e the bean..if i keep it in jdk\bin the packager gives me an error..i created a folder in my public jre jre\axbridge\bin and placed the class file there too but even this didnt work
    Kindly tell me what is the fully qualified package bean name if i have placed all my files under jdk\bin..

    D:\Java\jdk1.5.0_06\bin>packager -reg d:\java\jdk1.5.0_06\bin\PersonBean.jar Per
    son
    Processing D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\\Person.idl
    Person.idl
    Processing D:\PROGRA~1\MICROS~2\VC98\INCLUDE\oaidl.idl
    oaidl.idl
    Processing D:\PROGRA~1\MICROS~2\VC98\INCLUDE\objidl.idl
    objidl.idl
    Processing D:\PROGRA~1\MICROS~2\VC98\INCLUDE\unknwn.idl
    unknwn.idl
    Processing D:\PROGRA~1\MICROS~2\VC98\INCLUDE\wtypes.idl
    wtypes.idl
    Registration failed:
    The packaged JavaBean is not located under the directory <jre_home>\axbridge\bin
    this is the error i get

  • How to include class files in no package?

    hi,
    I have a class file in a package called
    pack.Test
    and a class file not in a package called
    Library
    When I try to use Library from within pack.Test, it says theres no such class. I have my classpath setup correctly, and the files in the correct directories.
    ie. on windows if %DIR% is the base directory then
    %DIR%\Library.java
    %DIR%\pack\Test.java
    is how they are layed out.
    Is there a way to get Library imported to pack.Test?
    thanks,
    asjf

    What?!! It isn't considered legal to access a
    root-level class from a higher level package?Well it's not now because your code won't compile, but
    prior to 1.4 you could. I think the JLS has been
    updated to say you can't import from the unnamed
    namespace.Hmm! I must have missed that bit (not that I read it in any great detail, anyway!). I suppose it forces you to use packages, which is a good thing, IMHO.
    What I was wondering about was, is the directory structure of classes strictly necessary, given that a class contains information on its package anyway? I know some IDEs don't require the source files to be in the right directory - they will check on the package statement, and locate the class file accordingly - but is it absolutely necessary for class files to be located according to their directory structure? I know the JLS says they have to be, but could the JLS be relaxed on this point, without breaking anything?
    RObin

  • Ant tools: converter java card -  class file  not belonging to the package!

    Hi
    I have another problem with converter. Could you help me please again if you have the time?
    I have created a directory when I save the class files generated by javac. After That , I use convert in this way:
    <convert
    JCA="true"
    EXP="true"
    CAP="true"
    packagename="testUn/classes/testUn"
    packageaid="0x01:0x01:0x01:0x01:0x01:0x01:0x01:0x01:0x02:0x00"
    majorminorversion="1.0"
    verbose = "true">
    <AppletNameAID
    appletname="testUn.classes.testUn.PorteAppUn"
    aid="0x01:0x01:0x01:0x01:0x01:0x01:0x01:0x01:0x02:0x00:0x00"/>
    <classpath refid="classpath"/>
    </convert>
    Here is the answer of the computer:
    [echo] Generation of the CAP,JCA and EXP files...
    [convert] Java Card Ant Tasks, Version 1.0
    [convert] Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
    [convert] Note: Usage of Java Card Ant Tasks is optional. Java Card Ant Tasks are not supported by Sun Microsystems, Inc.
    [convert] Java Card 2.2.2 Class File Converter, Version 1.3
    [convert] Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
    [convert] parsing /home/ehoudart/app-manager/VersionZero/src/testUn/classes/testUn/PorteAppUn.class
    [convert] converting testUn.PorteAppUn
    [*convert] error: class PorteAppUn does not belong to package testUn.classes.testUn.*
    [convert] conversion completed with 1 errors and 0 warnings.
    I do not understand why this unique applet class file does not belong to its own package. Is someone an idea?
    Thanks very much in advance for your answer.

    Here is a complete example build.xml (I think I have posted this before).
    <?xml version="1.0" encoding="UTF-8" ?>
    <project default="convert" name="javacard-starter">
      <!-- Build specific properties -->
      <property name="target.classes" location="${basedir}/target/classes" />
      <property name="target.javacard" location="${basedir}/target/javacard" />
      <property name="source.java" location="${basedir}/src/main/java" />
      <!-- Must point to the folder containing the JAR files from the JCDK -->
      <property name="javacard.libs" location="${basedir}/lib" />
      <!-- Must point to the folder containing the JAR file from the JCDK ant task -->
      <property name="javacard.ant-task" location="${basedir}/lib" />
      <!-- Must point to the folder containing the API export files from the JCDK -->
      <property name="javacard.export" location="${basedir}/src/main/export" />
      <property name="verbose" value="true" />
      <property name="noverify" value="false" />
      <!-- Path for JC tasks -->
      <path id="classpath">
        <fileset dir="${javacard.ant-task}">
          <include name="*.jar" />
        </fileset>
        <fileset dir="${javacard.libs}">
          <include name="*.jar" />
        </fileset>
      </path>
      <!-- set the export path to the Java Card export files -->
      <path id="export" description="set the export file path">
        <fileset dir="${javacard.export}">
          <include name="**/*.exp" />
        </fileset>
        <pathelement path="${javacard.export}" />
        <pathelement path="${target.classes}" />
        <pathelement path="${target.javacard}" />
      </path>
      <!-- Definitions for tasks for Java Card tools -->
      <taskdef name="capgen" classname="com.sun.javacard.ant.tasks.CapgenTask" classpathref="classpath" />
      <taskdef name="deploycap" classname="com.sun.javacard.ant.tasks.DeployCapTask" classpathref="classpath" />
      <taskdef name="convert" classname="com.sun.javacard.ant.tasks.ConverterTask" classpathref="classpath" />
      <taskdef name="verifyexport" classname="com.sun.javacard.ant.tasks.VerifyExpTask" classpathref="classpath" />
      <taskdef name="verifycap" classname="com.sun.javacard.ant.tasks.VerifyCapTask" classpathref="classpath" />
      <taskdef name="verifyrevision" classname="com.sun.javacard.ant.tasks.VerifyRevTask" classpathref="classpath" />
      <typedef name="appletnameaid" classname="com.sun.javacard.ant.types.AppletNameAID" classpathref="classpath" />
      <typedef name="jcainputfile" classname="com.sun.javacard.ant.types.JCAInputFile" classpathref="classpath" />
      <target name="init">
        <mkdir dir="${target.classes}" />
        <mkdir dir="${target.javacard}" />
      </target>
      <target name="clean">
        <delete dir="${target.classes}" />
        <delete dir="${target.javacard}" />
        <delete dir="${javacard.eeprom}" />
      </target>
      <target name="compile" depends="init" description="Compile source code to class files">
        <!-- Compile the java code from ${src} to ${classes} -->
        <javac debug="yes" optimize="no" srcdir="${source.java}" destdir="${target.classes}" source="1.5" target="1.5">
          <classpath refid="classpath" />
        </javac>
      </target>
      <target name="convert" depends="compile" description="Convert class files to cap files">
              <convert packagename="chaining" packageaid="0xF0:0x00:0x00:0x01:0x00:0x01" majorminorversion="1.0" classdir="${target.classes}" outputdirectory="${target.classes}" jca="true" exp="true" cap="true" debug="true" verbose="${verbose}" noverify="${noverify}">
                   <appletnameaid aid="0xF0:0x00:0x00:0x01:0x00:0x01:0x00:0x01" appletname="chaining.ChainingApplet" />
                   <exportpath refid="export" />
                   <classpath refid="classpath" />
              </convert>
      </target>
      <target name="copy-debug">
        <mkdir dir="${target.debug}" />
        <echo>Copying cap files</echo>
        <copy flatten="true" todir="${target.debug}" verbose="true">
          <fileset dir="${target.classes}" includes="**/*.cap" />
          <fileset dir="${target.classes}" includes="**/*.exp" />
          <fileset dir="${target.classes}" includes="**/*.jca" />
        </copy>
      </target>
      <target name="all" depends="clean, convert" />
    </project>

Maybe you are looking for