Alternate drives in Jar file Class-Path attribute

Hello, all. I am working on a project that I would like to package into a single jar file for simple execution. At my place of work classes from EJB are stored on a different drive from where I am doing the development. I am having trouble accessing those classes from the Jars I am creating. When I try the following manifest:
Main-Class: MyPackage.MyClass
Class-Path: U:\someFolder
the application will not start, saying that MyPackage.MyClass cannot be found. This is despite MyPackage.MyClass being properly packaged into the Jar file, as verified by a jar t operation. When I leave off the drive letter in the Class-Path attribute:
Main-Class: MyPackage.MyClass
Class-Path: someFolder
the application starts and executes properly right up until a class from someFolder is needed, at which point exceptions begin to be thrown.
Any ideas will be much appreciated!
John Todd

I was eventually able to find the answer to my own question: Jars do not accept absolute paths at all, only relative paths. Thus, the alternate drive approach will not work. Fortunately I was able to find an alternate solution.
John Todd

Similar Messages

  • Who knows about Jar/Manifest: Class-Path-Attribute

    My question is:
    When packaging my classes and ressource files into a jar file, everything works fine as long as I put the manifest-file into the parent directory of the package folders (there's the main class too) and set its Class-Path-Attribut just as . (a dot).
    I'm working with WinXP Prof.
    As soon as I fill in a path with backslashes or slashes as separator, the produced jar-file doesn't work (class loader does'nt find main-class).
    Is the problem the drive-letter (D:) in the path or do you know something else?
    Greetings
    Frank

    Yes, and likely the . is what you need ...saying: I want the packages which begin in the same directory as the jar running this application. Even if your class is in a package hierarchy like tst.test.Support.class, if the directory tst is in the same directory as the application jar, you would use classpath . not tst/test/Support.class. If you put the tst package in a directory under the folder where the jar resides, say called testit ...you would then have a classpath in the mainifest like testit/. The class path always needs to get you to the root of any package you want to use ...but not into the package itself. Java recognizes when it is looking at a package nesting due to the package declaration syntax in the files, the classpath just points to the location of the root of that package and nothing more. Does this make sense?

  • Multiple Class-Path: attributes in Jar files

    Hello,
    I'm packaging a set of jar files for distribution with Class-Path: attributes in them. In the documentation I read and in one of the java trails it said that I could have a manifest file like:
    Class-Path: log4j.jar log4j-core.jar
    Class-Path: jsse.jar jcert.jar jnet.jar
    But this doesn't work. It only works when I do this:
    Class-Path: log4j.jar log4j-core.jar jsse.jar jcert.jar jnet.jar
    Here is how I'm running the jar:
    java -jar server.jar
    Is the documentation wrong? Or this is a bug?
    thanks
    charlie

    Certain attributes were only meant to be specified once. Like Main-Class and Class-Path for example. If these were listed two or more times, then the last occurance is the one that gets recognized (basically, each new instance overwrites the previous instance). Some attributes are listed as "per-entry" and are freely duplicated for each entry. For example signed jars could have a number of Name: and xxx-Digest: attributes.
    This link is to the manifest spec:
    http://java.sun.com/products/jdk/1.2/docs/guide/jar/manifest.html
    To answer the original posters question, the doc's are in error. Actually, the error was not in the docs, it was in the tutorial, but none the less its still in error. He could have done this:
    Class-Path: log4j.jar log4j-core.jar
    jsse.jar jcert.jar jnet.jar
    ^-- two spaces before the start of jsse.jar
    because the docs allow for line continuation (although it's not exactly clear if you read the docs). The docs are also apparently in error regarding the max line length of 72 bytes. I have tested this with over 100 char's on a win32 machine and it works fine for me. The limitation must therefore apply to some other operating system, or it could just be in error.
    -Ron

  • Jar Class-Path attribute configuration problems

    java version 1.5.0_14
    OS: Windows Server 2003
    Problem description: Executable jar file needs to access external jar file resources on the same server that executable jar file resides.
    Scenario: Executable jar file resides in a directory called c:\Java. External jar file resides in a directory called c:\Java\itext1
    I have attempted configuring the Class-Path attribute in the manifest with the following:
    java/itext1/itext1.jar or entering itext1/itext1.jar
    I receive the following error message, from the java command:
    c:\>java -jar /java/MyJar.jar
    Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/pdf/
    BaseFont
    I even unpacked the jar file, to see if I could access the class using the following command below (The class does not have a main method, so I did not expect it to execute, but I would have thought the class would have been located)
    C:\>java java/itext1/com/lowagie/tools/BaseFont
    Exception in thread "main" java.lang.NoClassDefFoundError: java/itext1/com/lowa
    ie/tools/BaseFont
    I am at my wit's end. Does anyone have any suggestions?

    The -jar flag tells the interpreter that the application is packaged in the JAR file format, and to my knowledge, has nothing to do with the classpath attribute within the manifest
    At any rate, I found my problem. When packaging the jar via Eclipse, I had 2 .classpath resource files within the project, which was causing the jar fiile to be built incorrectly.

  • Class-path attribute & exploded structure

    hi all,
    I've got an exploded app and I'm trying to deploy a session bean
    which has some dependencies on other helper classes.. I've wrote a manifest file
    and I've specified the class-path attribute, but I still get java.lang.NoClassDefFoundError..
    I wonder if manifest file is working for an exploded structure...
    did anybody tried that ?
    thanks for your time,
    cheers

    Manifest classpath (aka JAR dependencies) is a J2EE 1.3 concept. Expect to see it when iAS supports J2EE 1.3.

  • How to set path to jar file (classes)?

    hi,
    i have a java program which uses a jar file (lots of classes). so, i run them all in eclipse but i want to run it on a command line, like through cmd from run.
    the classes are found in a different folder, and the code snippet is found in another folder. so where or how to set the path to the jar file?

    Write
    c:/java -?
    you can use the -cp pption to use your jar file or a folder with classes.
    java -cp jar1.jar myclass.class

  • I am getting the following error: Unable to locate class: java.lang.NoClassDefFoundError: on an iPlanet WS. We have ensured that the classpath in jvm12.conf includes the jar file with path. Any ideas?

     

    Well, now I'm pulling my hair out even more because I can't get it to resolve anything in jaxws-rt.jar at runtime. Note: compile-time still works FINE.
    I was messing with classpaths and stuff (and the endorsed dirs option of course) and it was "working" to the extent I had posted before, but then I kept playing with it and at some point I said, this isn't working and I need to reset all this stuff back to the way it was.
    ... so I did that. And now it won't resolve "PolicyException:"
    java.lang.NoClassDefFoundError: com/sun/xml/ws/policy/PolicyException
    This doesn't mean anything to you guys I bet, but that happens when it FIRST gets inside the web service code, which references PolicyException (doesn't even use it at that point.. I'm assuming the import is screwing it up when it's in the constructor). So now it won't resolve at all. Before, it was getting past this point and telling me the "method not found" error on the next line or this same error for WSBindingProvider two lines down, when it's actually being used. AWESOME.
    I downloaded the latest jaxws-rt.jar and all its dependencies, shoved that into my lib folder, and set the endorsed dir to that folder (There's kind of a web of dependencies here. jaxws-rt.jar expects all its dependencies to be in the same folder, it seems, so I don't know how it was "working" before when I just copied jaxws-rt.jar into my separate endorsed dir - but I can't move all of those files to endorsed because I need them in my project (which expects them to be in the lib folder)). What happened? It went back to my original "String" error (first error in the first post), which means it's not getting endorsed at all from that location.
    What a mess.
    Can someone tell me what the heck I'm supposed to do with this jar file?

  • How do I add the system classpath to Jar Manifest Class-Path

    My application is implemented on win2000 and need to be moved to unix as a executable jar file, the oracle jdbc classes (classes12.zip and classes111.zip) were included in MANIFEST.MF as the following:
    Class-Path: /Oracle/Ora81/jdbc/lib/classes12.zip /Oracle/Ora81/jdbc/lib/classese111.zip
    When I move the jar file to unix, the classpath will be changed, is there a way to make the jar file read the class-path from system CLASSPATH?
    Thank you.
    Y.

    I have the same problem for weeks now, and I can't seem to get it solved. If you found anything please inform me.
    thanks in advance
    Eran

  • Include driver in jar file

    Hi, i need include de jdbc driver for postgres en my jar application file...
    i use netbeans 4 but i dont know make this...
    Help meeeeeeeeeeeeeee

    It's not just the driver, of course, the driver will connect to every other class in the postgres jar file. You can extract all the files from the jar, creating a directory tree and then combine that tree with your own class tree before building a new jar. If you expand into build/classes then I think the jar target will include them.
    "jar xf xxxx.jar" will do the unpacking.
    You should also probably take a look at the GenJar project on sourceforge if you're going to do this sort of thing. It's a tool which works out what classes are needed from many sources and assembles them into a jar.

  • Classloader isolation and jar manifest Class-Path headers

    I have a system where I am loading a set of jars, each with its own URL classloader. So, Jar a is loaded by Loader A, jar b is loaded by Loader B, and so on.
    Each jar has a Manifest Class-Path entry declaring its dependence on other jars. So in the example above, a puts c.jar in its Class-path, and, let's say, b also puts c.jar in its Class-path, unbeknownst to a.
    Let's say there's a class Foo in c.jar. I want--need--it to be the case that (loader of a.jar == Foo.class.getClassLoader()) from the perspective of classes found in a.jar, and (loader of b.jar == Foo.class.getClassLoader()) from the perspective of classes found in b.jar.
    That is, I want a and b to have their own isolated "copies" of c.jar.
    Instead, what I'm finding is that Foo.class is loaded once, and his loader "leaks" over to the other jar's loader, if that makes any sense.
    Is there any way to accomplish what I am talking about here?
    Laird

    As I understand the question - no.Hi; I think you misunderstand the question.
    The classes are being loaded by the system loader.
    Thus there is no way to seperate them.
    If you want them seperate then you must use an
    explicit class loader to load them.I am using explicit loaders to load them. Let me try again, because I don't think I was clear.
    I have an application that has, let's say, nothing at all in its classpath. That is, it was invoked via "java ApplicationMainClass". No classpath.
    Now that application reads, let's say, a properties file containing a list of URLs that point to jars.
    Now the application creates a new URLClassLoader for each such URL. So if the mythical properties file has ten lines, then I create ten classloaders, each of which points to one and only one URL.
    My problem is, even classes loaded by these isolated, separate classloaders are "leaking" across to other loaders. Remember, the parent classloader of all of these classloaders can't see the jars. Its classpath was empty, remember?
    The issue is that the findLoadedClass() method of java.lang.ClassLoader scans the whole VM to see if a given Class was loaded before, and if it was, then by default that Class is simply returned. But I don't want that behavior.
    Now, I also don't want the behavior of having to load the silly things off disk each and every time. So how do I retain this true multiple classloader isolation?
    Thanks,
    Laird

  • Can't jar files with paths 255 chars

    Hi all,
    I have some wsdls that have namespaces long enough that Axis' wsdl2java process creates java files with full paths longer than 255 chars. The java files DO get generated, however. Additionally, javac finds them and compiles them. However, jar doesn't seem to want to jar them. Any idea why wsdl2java and javac work but jar doesn't? Is there anything I can do about it besides trying to move my code to a shorter path?
    thanks
    john

    You may be running into a 72-character limit internal
    to jar files, specifically manifest file line
    lengths. Review the JAR Specification where it
    discusses manifest files. If that's the problem, you
    can use line continuations.Thanks, but that's not the problem. The manifest classpath is the same as it's been for a long time and does span multiple lines. The full path to the files in question is 260-some chars. There are about 10 classes that have this problem. I guess the problem has existed for a long time but these generated files weren't being used until now. The really bad thing about this is that the build now becomes machine-dependent-- if someone checks out the code to a path that's too long, the build fails silently.

  • Help: manifest class path attribute - OC4J 9.0.3

    I have tried everything I can think of. I have even downloaded the developers version of JRun to ensure my code does deploy under the J2EE spec.
    Per compleating deployment under JRun, I have migrated back to OC4J and made the approperate modifications to orion-web.xml to include the following entry:
    <web-app-class-laoder include-manifest-class-path="true" />
    Even with this entry I get the same class not found statements. I am out of ideas.
    Anyone got some sugestions?
    Info: Ear deployment, static pages deploy under all wars...
    Thanks.
    Andrew
    [email protected]

    I have tried everything I can think of. I have even downloaded the developers version of JRun to ensure my code does deploy under the J2EE spec.
    Per compleating deployment under JRun, I have migrated back to OC4J and made the approperate modifications to orion-web.xml to include the following entry:
    <web-app-class-laoder include-manifest-class-path="true" />
    Even with this entry I get the same class not found statements. I am out of ideas.
    Anyone got some sugestions?
    Info: Ear deployment, static pages deploy under all wars...
    Thanks.
    Andrew
    [email protected]
    Hi Andy -
    Can you check the attribute and make sure it's the following:
    <web web-app-class-loader include-war-manifest-class-path="true"/>
    ^^^
    You have have just typed it in quickly, but I noticed there's a typo in the entry you have above and you are missing the WAR piece of the attribute name.
    There's a how-to document on OTN which has an example of this.
    http://otn.oracle.com/tech/java/oc4j/htdocs/how-to-servlet-warmanifest.html
    cheers
    -steve- Hi Steve
    Where can I find the zip file I went through the link but doesn't have any link to zip file
    Thanks
    Ritesh

  • Manifest Class-Path: attribute setting

              Hi there,
              Though the classpath entry is made it is not reacting as expected...Need help
              in understanding the classpath attribute behaviour on web Logic Server 7.0...
              how do I make a jar file inside a war file(war/WEB-INF/lib)refer another jar file
              outside this war.
              

    You looked into the Jar section of the Sun tutorial did you?

  • Jar File Class Caching

    Hi,
    I am having a problem with Weblogic 5.1 with Service Pack 5 and 6 and the deployment of jar files. I have my classpath set so that deployed classes can be found in the weblogic\myserver\serverclasses directory and I explicitely say weblogic\myserver\serverclasses\mybeans.jar for every jar I have.
    Everything was working smoothly unitl I pushed out a new version of my jar file which had some minor updates to one of my beans. Weblogic was recognizing changes to the jar(after a shutdown and start back up), but then it suddenly stopped. I can't even see simple System.out statements placed at the beginning of my methods. Other changes to other classes in the jar are being accepted, is there something I am missing or is there a bug in weblogic that can get fixed with a particular service pack?
    Here is the only difference from the class in the jar that is not being reloaded than those that are:
    public static final String[] getList(String id) {
    String[] aList = new String [4];
    //do some lookup and set the array
    i.e. aList[0] = someString;
    ect....
    return aList;
    The above works fine.... but adding a simple System.out or creating a new local variable does not take affect. I checked the jar file and the class does include the changes.
    Thank you, any help will appreciated.
    - Eric Paul

    Your question isn't very helpable either. You try to "access" this jar file from another computer? Exactly how? Did you mean it to be an applet, or are you trying to use Webstart, or what?

  • Restart application or reload jar-file(class-files)

    hi,
    i write an update service for my application!everytime a update is available, the new jar-file(my application) will be downloaded and replace the old, running jar-file! now i want to restart my application to use not a mix of old and new class-files in the vm!
    is there any possibility for restarting my java vm or is there another way to "refresh the class-files in the vm"?
    thx mseele

    Hi,
    The easiest way is to terminate the jvm (using System.exit), and just have a loop in the script file that starts your application. In that way your application will be restarted when the jvm exits.
    To write a classloader of your own is another, but a lot harder way.
    /Kaj

Maybe you are looking for