[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.newcomer] Re: user library problem
|
Thanks for the response. I think that if there is any fault with Eclipse it
is the fact that within its environment the scenario I described worked both
statically in terms of there being no problems identified and dynamically in
terms of CTL-F11 causing the app to run as I expected. I had assumed that
if the application structure worked within the environment then I should be
able to package the same structure in a jar and expect it to work.
"Walter Harley" <eclipse@xxxxxxxxxxxxxx> wrote in message
news:gontdv$tvk$1@xxxxxxxxxxxxxxxxxxxx
> "Roger H. Levy" <rhl@xxxxxxx> wrote in message
> news:gomrdr$o8j$1@xxxxxxxxxxxxxxxxxxxx
>> Project 1 consists of classes I want to structure as a library. Each
>> class is in "package X" and I produced a jar file that has a directory
>> "X" with all the class files in that directory.
>>
>> Project 2 is an application that needs to use the library. I created a
>> "lib" directory in that project and imported the library jar into it.
>> Then I right clicked on the imported jar, selected "build path" and
>> selected "add to build path." At that point all errors in source files
>> in Project 2 that imported classes in package X cleared.
>>
>> I then exported Project 2 to an application jar file. The jar file has a
>> lib directory with the jar from Project 1 in it. There is a .classpath
>> file with,
>> <classpathentry kind="lib" path="lib/X.jar"/>
>> and there is a manifest file that identifies the Main-Class. Everything
>> seems in order to me but when I execute the application I immediately get
>> class not found exceptions for classes in the library.
>>
>> I've built simpler projects before but use of a user library is new for
>> me. Can someone identify the problem?
>
>
> Sounds like you're trying to embed one jar file in another. The JRE
> doesn't know how to cope with that, unfortunately; it doesn't have any way
> of expanding the jar file at runtime. (Also, at runtime the .classpath
> file is completely irrelevant; that is just an Eclipse compile-time thing,
> that you should not even include in your packaged .jar file.)
>
> The inability to deal with embedded jar files is a Java limitation,
> nothing to do with Eclipse. Normally you would deliver the jar files as
> separate files, and the user would list them individually on the
> classpath; or you'd deliver them separately and project 2's manifest.mf
> file would have a classpath entry pointing to the project 1 jar file with
> some relative path. There are also some solutions that can package jars
> together into a single executable; google "FatJar" for an example.
>
> If you're coming at this from a C/C++ background you might want to think
> of jars as being a bit like DLLs: if you package up one DLL as a resource
> inside another, it won't be executable unless you write some custom code
> to extract it at runtime. Same with Java: you can write custom code to do
> it, but it doesn't happen automatically.
>