?
Solved

Use jar of a jar for your classpath

Posted on 2002-04-25
9
Medium Priority
?
249 Views
Last Modified: 2013-11-23
Hi!
I want to reduce the size of my zip file (a.zip) that contains my classes (1,130 KB).
I've noticed that if I create a new zip file (b.zip) that contains the old zip file (a.zip) then the size of b.zip becomes 1,000 KB !
The problem is that I can't put b.zip in the classpath instead of a.zip and expect java to get the classes from it.

Can you tell me how can I use b.zip?
Thanks!!!
0
Comment
Question by:rzvika2
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
9 Comments
 
LVL 35

Expert Comment

by:girionis
ID: 6967980
 If you create a b.zip file that contains the a.zip file and some additional classes then you can use it in your classpath. The only thing is that the JVM will not be able to read the classes from the a.zip file but only the ones from the b.zip. If you want to use both files then you will have to have two separate .zip files in your classpath.

  Hope it helps.
0
 
LVL 9

Expert Comment

by:Venci75
ID: 6967997
I don't think it is possible. At least you should create your own class loader.
How do you create your zip file? - using WinZip?
I am asking because may be there is another way to reduce the size of your zip file
0
 
LVL 92

Expert Comment

by:objects
ID: 6968059
Did you use the same compression for creating a and b?
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 

Author Comment

by:rzvika2
ID: 6968097
Venci75: yes, can you tell me about a more powerfull compression tool?
objects: yes, the maximum compression.
0
 
LVL 16

Expert Comment

by:heyhey_
ID: 6968299
I would suggest you to use obfuscator
0
 

Author Comment

by:rzvika2
ID: 6968712
Can you tell me some more info (whre to get it, compression relates to winzip...)
Thanks!
0
 

Author Comment

by:rzvika2
ID: 6968726
BTW, in case it compress the code like Dashopro, we already use Dashopro.
We want to compress more than that...
0
 
LVL 92

Expert Comment

by:objects
ID: 6969889
As others have mentioned there is no easy way to use a jar in a jar. And if you develop one, then the extra class will eat up the minor saving you achieve doing this.
If you want to reduce the size of your jar then I'd suggest looking at your code, and trying to optimise the size of your class files.
0
 
LVL 1

Accepted Solution

by:
iartmirko earned 600 total points
ID: 6971051
Hi rzvika,

if you need to reduce the size of your zip/jar file you don't have to zip it twice. There is a nice (FREE!) tool from IBM alphaWorks that solves your problem of big jars by doing the following:
- Removal of dead methods and fields
- Detection of live overridden methods
- Removal of unused classes and interfaces
- Inlining of methods
- Removal of non-essential attributes
- Shortening of internal method names and field names
- Removal of non-used entries in the constant pool

After the above steps, JAX may use more aggressive compression techniques as well.

See http://www.alphaworks.ibm.com/tech/jax for downloads and details...

Hope taht will solve your problem.

Mirko
0

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn different types of Android Layout and some basics of an Android App.
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
Suggested Courses

718 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question