Problems uncompressing compressed jar files

Hi all,
I am seeing an unusual issue where some entries don't have full header info. By this I mean, according to the ZIP spec, it is possible that the header info is stored before the file data, so you CAN get the right info. But sometimes, it can be stored as an EXT header, where it is some place AFTER the compressed file data.
So most of the time we are getting good size/comrpessed size info and can properly get the entry out of the zip file. But sometimes, we get -1 values and are not able to get the entry at all.
We are working on allowing a classloader to get classes out of an "embeded" zip/jar file. In other words, a jar file can contain embeded zip/jar files (only 1 level deep), and our classloader not only finds the classes of the main jar file (using the URLClassLoader capabilities, but if a class being looked for is not found in the main jar file, we then try to find it in any embeded jar/zip files. Finding the classes is fine, trying to create .class files out of the compressed data from an embeded jar/zip is the problem.
We are getting NegativeArraySizeExceptions thrown.
URLConnection connection = resURL.openConnection();
byte[] classData = new byte[connection.getContentLength()];
InputStream input = connection.getInputStream();
The resURL points to an embeded jar/zip within the outer jar file. The exception is thrown in the 2nd line above, when we try to create the byte[] array to hold the class data. The getContentLength() returns -1.
Any help would be appreciated. Thanks.

ZipInputStream only reads the local file header (LFH) of an entry if getNextEntry() is called, when the size and compressed size are not in the LFH becourse the sizes were unknow when the LFH was written the sizes are set to -1 and a flag is set to indicate that the entry has an EXT header after the data which contains the sizes.
So I think the only thing you could do at the moment it to write an extension of ZipInputStream that checks if the flag is set and then looks for the EXT header to get the sizes but the difficult part is to get the data, ZipInputStream uses a PushbackInputStream to read the data but that InputStream doesn't support the mark method.
Good luck.

Similar Messages

  • Problems Signing a Jar File.

    Hi Everyone
    I'm having problems signing a jar file.
    The applet in the jar file was previously signed by Duke.
    Now I want to re-sign it with my company name.
    So I unzip the jar file. I was careful to remove the manifest and the Duke .sa and .rsa. I re-signed it with the netscape signtool.
    The applet works. It presents the prompt that it is signed by my company. I grant session. Then another prompt appears and it says it is signed by duke.
    but i was careful to remove the duke signature and manifest file when i unzipped it. Is it possible that the fact that it is signed by duke is stored in the bytecode ??
    It is using the <object tag by the way.
    <OBJECT classid="clsid:CAFEEFAC-0013-0001-0002-ABCDEFFEDCBA"
         WIDTH = "100%" HEIGHT = "50" border="0"
         codebase="http://www.homework911.com/java/j2re-1_3_1_02-win.exe#Version=1,3,1,2">
         <PARAM NAME = "CODE" VALUE = "com.s.SApplet"/>
         <PARAM NAME = "CODEBASE" VALUE = "/_phone"/>
         <PARAM NAME = "type" VALUE="application/x-java-applet;version=1.3"/>
    stev

    great suggestion - there are no other signed jar files on the browser for it to access. There is a winzip file but it has no rsa/dsa and signature file in it.
    perhaps it is accessing something else that was signed by duke ?
    Would it be possible for it to connect to a server program that was signed by duke and therefore present the prompt. ?
    I'm trying to get the original unsigned classes and see if i can recompile and sign it just in case then name duke is in byte code.
    any other thoughts as to what this code be ?
    stephen

  • Problem Signing midlet .jar file.

    Hi,
    Step - 1 :
    ======
    - I have created a keystore first like.
    - c:> keytool -genkey -alias <alias> -keystore c:/abcd.sks -keyalg RSA*
    o/p : So it created a keystore.
    Step - 2:
    ======
    - I imported my certificate from Verisign into the keystore..
    - keytool -import -alias <alias> -keystore c:/abcd.sks -file <CompanyCert.cer>
    o/p : The certificate imported successfully.
    Problem :
    =======
    Problem occurs at the time of signing the jar file with jarsigner
    jarsigner Myjar.jar <alias>
    o/p :Jar is signed and It says, "your certificate will expire in six months". But our certificate has an expiry in 2011.
    Also when the jar file installed in the mobile, it occurs as an invalid application.

    The following may help you..
    JavaJar(written by java) can compress and decompress jar,war, ear and.zip...
    it can deal with manifest file and executable .jar file .specially.
    may download from http://www.qwerks.com/download/4114/JavaJar.zip
    the tool is very verygood tool.
    but the homepage(www.pivotonic.com) of JavaJar cannot be accessed.
    it is funny.
    good lucky.

  • I believe I have a problem with my Jar file build.

    Hi, there. New to Java/JavaFX. Testing language features. Operating System: Windows 7; java version 1.7.0_03; javafx version 2.0.3.
    This is a simple test with 2 classes: Test1.class resides in base directory "MyJavaFX"; TextFileLoader.class resides in sub-directory "inout" of "MyJavaFX"(i.e. MyJavaFX\inout).
    Test1.class has an import statement "import inout.TextFileLoader;" TextFileLoader.class has a package statement "package inout;"
    Both classes compile without problems and jar file is created using Ant tasks.
    Within "MyJavaFX" as my current directory, When running Application Test1 (java -jar Test1.jar)
    getting error "ClassNotFoundException: inout.TextFileLoader".
    I believe it has to do with how Test1.jar file is built. I believe line 4 should say "inout/TextFileLoader.class"
    instead of just the simple class name but I can't get my Ant task to set it up that way.
    This is "Test1.jar":
    META-INF/
    META-INF/MANIFEST.MF
    Test1.class
    TextFileLoader.class
    com/
    com/javafx/
    com/javafx/main/
    com/javafx/main/Main$1.class
    com/javafx/main/Main.class
    com/javafx/main/NoJavaFXFallback.class
    This is my "build.xml" file:
    <project name="JavaFxTest" default="default" basedir="."
         xmlns:fx="javafx:com.sun.javafx.tools.ant">
    <target name="default">
         <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
         uri="javafx:com.sun.javafx.tools.ant"
         classpath="C:/Program Files/Oracle/JavaFX 2.0 SDK/tools/ant-javafx.jar"/>
         <fx:application id="Test1"
         name="Java Test Program"
         mainclass="Test1"/>
         <fx:resources id="appRes">
         <fx:fileset dir="C:/Program Files/Oracle/JavaFX 2.0 Runtime/lib"/>
         </fx:resources>
         <fx:jar destfile="C:/MyjavaFX/Test1.jar">
         <fx:application refid="Test1"/>
         <fx:resources refid="appRes"/>
         <fileset dir="." includes="Test1.class"/>
         <fileset dir="inout" includes="TextFileLoader.class"/>
         </fx:jar>
    </target>
    </project>

    if javaw fails to launch the VM then a dialog should be displayed with an error. The first time I launch an application with javaw (after installing the JVM on a new machine it takes a long time for it to happen. have you tried from the command line >javaw -jar D.jar? I'm wondering if the installation of java went well on your machine. It's supposed to set up things correctly. did you install a new version of java over an existing one? maybe there was a java plugin previously installed on the machine before you installed j2sdk.
    walker

  • Problems with signed JAR files in JWS/JRE6 environment.

    Hello All,
    I'm encountering a problem running our desktop application as a Java Web Start deployment in a JRE 6 environment. There were never any problems when running the same application as a JWS deployment in JRE 1.4, or 5, environments. There are also currently no problems in a JRE 6 environment when running the application as a standard desktop application.
    The problem which I am having has nothing to do with launching the application. But for good measure, I verified the JNLP file with JaNeLA. A couple things we out of order, which I addressed to make JaNeLA happy, but my problem still persists. Here is my JNLP file (anonymized to protect the innocent):
    TS: 2010-10-18 17:04:46
    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp codebase="$$codebase" href="$$name">
         <information>
              <title>Acme Desktop</title>
              <vendor>Acme Corporation</vendor>
              <homepage href="http://www.acme.com/"/>
              <description>Acme Client for Acme Server</description>
              <description kind="tooltip">Acme Client for Acme Server</description>
              <icon href="desktop.gif"/>
              <offline-allowed/>
         </information>
         <security>
              <all-permissions/>
         </security>
         <resources>
              <j2se version="1.5+"/>
              <jar href="acmedesktop.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/antlr-2.7.2.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/backport-util-concurrent.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/commons-codec-1.3.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/commons-httpclient.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/commons-logging.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/acmeapi.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/HelpJavaDT.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/HelpJavaDT_es.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/jacorb.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/Multivalent.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/slf4j-api-1.5.6.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/slf4j-jdk14-1.5.6.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/snow.jar" download="lazy" version="8.00.01.00+"/>
              <jar href="lib/AcmeTMClient.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/xercesImpl.jar" download="eager" version="8.00.01.00+"/>
              <jar href="lib/xml-apis.jar" download="eager" version="8.00.01.00+"/>
              <extension name="installer" href="desktopInstaller.jnlp" />
              <extension name="Java Help" href="help.jnlp"/>
              <property name="java.library.path" value="./lib"/>
              <property name="admin" value="false"/>
              <property name="webstart" value="true"/>          
              <!-- The following two lines are for SSO implementation only
              <property name="urladdress" value="http://localhost:8080/AcmeDesktop/servlet/AcmeServlet"/>
              <property name="cookiespec" value="RFC2109"/>
              -->          
         </resources>
         <resources os="Windows">
              <nativelib href="lib/jniWin32.jar" version="8.00.01.00+"/>
         </resources>
         <application-desc main-class="desktop"/>     
    </jnlp>-----
    When running as a JWS deployment, on JRE 6, the application will be functioning normally for a little while, and then suddenly the following exception is thrown, and the current operation fails because the class in question cannot be accessed:
    java.lang.SecurityException: class "acmeapi.communication.CDocImpl"'s signer information does not match signer information of other classes in the same package
         at java.lang.ClassLoader.checkCerts(ClassLoader.java:807)
         at java.lang.ClassLoader.preDefineClass(ClassLoader.java:488)
         at java.lang.ClassLoader.defineClassCond(ClassLoader.java:626)
         at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
         at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
         at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
         at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
         at com.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:288)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
         at acmeapi.common.CDoc.getAnnotationsInfo(CDoc.java:493)
         at acmedesktop.communication.CCommunicationManager.privateGetAnnotations(CCommunicationManager.java:1976)
         at acmedesktop.communication.CCommunicationManager.getAnnotations(CCommunicationManager.java:1828)
         at acmedesktop.annotations.CViewAnnotations.getAnnotations(CViewAnnotations.java:826)
         at acmedesktop.annotations.CViewAnnotations.createView(CViewAnnotations.java:583)
         at acmedesktop.annotations.CViewAnnotations.setData(CViewAnnotations.java:736)
         at acmedesktop.annotations.CViewAnnotations.init(CViewAnnotations.java:205)
         at acmedesktop.hitspanel.CHitsPanel.viewAnnotations(CHitsPanel.java:281)
         at acmedesktop.hitspanel.CHitsTab$3.mousePressed(CHitsTab.java:316)
         at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)
         at java.awt.Component.processMouseEvent(Component.java:6260)
         at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
         at java.awt.Component.processEvent(Component.java:6028)
         at java.awt.Container.processEvent(Container.java:2041)
         at java.awt.Component.dispatchEventImpl(Component.java:4630)
         at java.awt.Container.dispatchEventImpl(Container.java:2099)
         at java.awt.Component.dispatchEvent(Component.java:4460)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4235)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
         at java.awt.Container.dispatchEventImpl(Container.java:2085)
         at java.awt.Window.dispatchEventImpl(Window.java:2478)
         at java.awt.Component.dispatchEvent(Component.java:4460)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)-----
    The classes of our desktop product are contained within the 'acmedesktop' and 'acmeapi' packages. It requires access to the hard drive of the workstation, and therefore, all jar files included with the application are signed using the following ANT task when compiled:
    <signjar keystore="resources/codesigning/keystore.pfx" storetype="pkcs12" storepass="myPassword" alias="myAlias">
         <fileset dir="${jws_dist}/app" includes="*.jar"/>
         <fileset dir="${jws_dist}/app/lib" includes="*.jar" excludes="jhall__V${dt_version}.jar"/>
    </signjar>-----
    Therefore, all classes, within all jar files, are signed with the same certificate (with the exception of the JavaHelp libraries, which are already signed by Sun - but the class in question attempting to be loaded here is not contained within the JavaHelp jar file anyway). So, the point being, that the exception message stating that the "signer information of the acmeapi.communication.CDocImpl class doesn't match the signer information of other classes in the same package", is simply not correct. All classes within that jar file were signed using the same certificate.
    I downloaded the JRE 6 source from dev.java.net and picked through this issue with a debugger. The ClassLoader.checkCerts() method compares the certificate used to sign the current class which is attempting to be loaded, with the certificates which signed all other previously loaded classes within the same package. If they don't match, the exception above is thrown. What is causing the issue is when the checkCerts() method attempts to get the certificates which signed the currently loading class, null is returned. And obviously, comparing null, with an array of the certificates which signed the previously loaded classes, isn't going to match; therefore this exception is thrown.
    The checkCerts() method gets the certificates of the currently loading class by calling the java.security.CodeSource.getCertificates() method. Tracing deeper in the debugger, the CodeSource object ultimately gets the certificates from the 'signersRef' member variable of the com.sun.deploy.cache.CachedJarFile class. signerRef is a SoftReference object and can therefore be garbage collected at some point. If it has already been garbage collected, the CachedJarFile class will attempt to retrieve it again from the loaded cache entry by calling com.sun.deploy.cache.MemoryCache.getLoadedResource().
    The MemoryCache class maintains the cache entries to the jar files as MemoryCache.CachedResourceReference objects, which subclass WeakReference, and therefore these objects can be garbage collected as well. If the cache entries have also been garbage collected, this leaves the CachedJarFile class with no ability to repopulate the CachedJarFile.signerRef object. Therefore it is completely out of luck getting the certificates which signed the currently loading class, which ultimately causes the above exception.
    When the com.sun.deploy.cache.Cache class attempts to retrieve a cache entry using its getCacheEntry() method, it will attempt to get the entry from the MemoryCache class, if null is returned, it will recreate the cache entry and add it back to the MemoryCache. In contrast, when the CachedJarFile class attempts to get a cache entry from the MemoryCache class, if null is returned, it just gives up.
    (from com.sun.deploy.cache.CachedJarFile:244)
    private CacheEntry getCacheEntry() {
         /* if it was not created by Cache do not search for entry */
         if (resourceURL == null)
              return null;
         CacheEntry ce = (CacheEntry) MemoryCache.getLoadedResource(resourceURL);
         if (ce == null) {
              //This should not happen because CacheEntry should not get collected
              // before CachedJarFile is collected.
              Trace.println("Missing CacheEntry for " + resourceURL + "\n" + ce,
                   TraceLevel.CACHE);
         return ce;
    When debugging, code execution falls within the code block with the comment stating "This should not happen...", but it is happening in my case.
    On an interesting side note, using the jvisualvm.exe tool included with JDK 6, I was able to tell that it seems as though these objects are collected the first time that the JVM allocates more heap space, and then the issue will occur. If I set the initial heap size very large (using -Xms) this issue won't occur at all. But that is kind of a bad solution which I would rather not do, but it is interesting to note for the sake of troubleshooting this issue. The max heap size (-Xmx) is plenty big enough, so the issue is not that we are running out of memory here.
    Does anyone have any insight as to what could be causing this? I've searched, and found a couple threads with similar problems but with no clear solutions. It is not just one workstation either, it happens everywhere I deploy the app as a Java Web Start application in a JRE 6 environment. I have been using version 1.6.0_18 on XP, but it seems to happen on any update version of 1.6. Is the fact that the CachedJarFile class doesn't attempt to reload the resource when it can't retrieve it from MemoryCache a bug? I've dug as deep as I can on this and I'm at wits end, does anybody have any ideas?
    Thank you
    Jake
    Edited by: jkc532 on Nov 12, 2010 10:35 AM

    jkc532 wrote:
    .. Is the fact that the CachedJarFile class doesn't attempt to reload the resource when it can't retrieve it from MemoryCache a bug? From your comprehensive investigation and report, it seems so to me.
    ..I've dug as deep as I can on this and I'm at wits end, does anybody have any ideas?Just after read the summary I was tired, so I have some understanding of the effort you have already invested in this (the 'wits' you have already spent). I think you should raise a bug report and seek Oracle's response.

  • Problem using a jar file : java.lang.ClassNotFoundException: ApiConn

    Hi everyone.
    i am running a form that use a bean_area to call a jar.
    but i am getting this error, thanks in advnce for any tip.
    Java Plug-in 1.6.0_33
    Using JRE version 1.6.0_33-b05 Java HotSpot(TM) Client VM
    User home directory = C:\Users\user1
    c: clear console window
    f: finalize objects on finalization queue
    g: garbage collect
    h: display this help message
    l: dump classloader list
    m: print memory usage
    o: trigger logging
    q: hide console
    r: reload policy configuration
    s: dump system and deployment properties
    t: dump thread list
    v: dump thread stack
    x: clear classloader cache
    0-5: set trace level to <n>
    java.lang.ClassNotFoundException: ApiConn
         at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
         at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at oracle.forms.handler.UICommon.instantiate(Unknown Source)
         at oracle.forms.handler.UICommon.onCreate(Unknown Source)
         at oracle.forms.handler.JavaContainer.onCreate(Unknown Source)
         at oracle.forms.engine.Runform.onCreateHandler(Unknown Source)
         at oracle.forms.engine.Runform.processMessage(Unknown Source)
         at oracle.forms.engine.Runform.processSet(Unknown Source)
         at oracle.forms.engine.Runform.onMessageReal(Unknown Source)
         at oracle.forms.engine.Runform.onMessage(Unknown Source)
         at oracle.forms.engine.Runform.processEventEnd(Unknown Source)
         at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
         at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
         at java.awt.EventQueue.access$000(Unknown Source)
         at java.awt.EventQueue$1.run(Unknown Source)
         at java.awt.EventQueue$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
         at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
         at java.awt.EventQueue$2.run(Unknown Source)
         at java.awt.EventQueue$2.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    Dumping class loader cache...
    Live entry: key=http://192.168.10.100:7778/forms/java/,frmall.jar,siberia_jpg.jar,ApiConn.jar,Hasher.jar,ReadCommand.jar,WriteCommand.jar,libAPI.jar, refCount=1, threadGroup=sun.plugin2.applet.Applet2ThreadGroup[name=http://192.168.10.100:7778/forms/java/-threadGroup,maxpri=4]
    Done.
    in my form i have created a bean_area and used as implementation class :ApiConn
    in my formsweb.cfg i used this configuration: archive=frmall.jar,siberia_jpg.jar,ApiConn.jar,Hasher.jar,ReadCommand.jar,WriteCommand.jar,libAPI.jar
    in my forms/java i have placed my jar files listed in the frmall.jar
    i guess i am missing something but i dont know what it is.
    here is my ApiConn.java from wich i generate my jar file:
    package libAPI;
    * This contains connection. Everything should be here,
    * should operate with this class only
    import java.io.*;
    import java.net.*;
    import java.util.concurrent.LinkedBlockingQueue;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    * @author janisk
    public class ApiConn extends Thread {
    private Socket sock = null;
    private DataOutputStream out = null;
    private DataInputStream in = null;
    private String ipAddress;
    private int ipPort;
    private boolean connected = false;
    private String message = "Not connected";
    private ReadCommand readCommand = null;
    private WriteCommand writeCommand = null;
    private Thread listener = null;
    LinkedBlockingQueue queue = new LinkedBlockingQueue(40);
    * Constructor of the connection class
    * @param ipAddress - IP address of the router you want to conenct to
    * @param ipPort - port used for connection, ROS default is 8728
    public ApiConn(String ipAddress, int ipPort) {
    this.ipAddress = ipAddress;
    this.ipPort = ipPort;
    this.setName("settings");
    * State of connection
    * @return - if connection is established to router it returns true.
    public boolean isConnected() {
    return connected;
    public void disconnect() throws IOException{
    listener.interrupt();
    sock.close();
    private void listen() {
    if (this.isConnected()) {
    if (readCommand == null) {
    readCommand = new ReadCommand(in, queue);
    listener = new Thread(readCommand);
    listener.setDaemon(true);
    listener.setName("listener");
    listener.start();
    * to get IP address of the connection. Reads data from socket created.
    * @return InetAddress
    public InetAddress getIpAddress() {
    return sock == null ? null : sock.getInetAddress();
    * returns ip address that socket is asociated with.
    * @return InetAddress
    public InetAddress getLocalIpAddress() {
    return sock == null ? null : sock.getLocalAddress();
    * Socket remote port number
    * @return
    public int getPort() {
    return sock == null ? null : sock.getPort();
    * return local prot used by socket
    * @return
    public int getLocalPort() {
    return sock == null ? null : sock.getLocalPort();
    * Returns status message set up bu class.
    * @return
    public String getMessage() {
    return message;
    * sets and exectues command (sends it to RouterOS host connected)
    * @param s - command will be sent to RouterOS for example "/ip/address/print\n=follow="
    * @return
    public String sendCommand(String s) {
    return writeCommand.setCommand(s).runCommand();
    * exeecutes already set command.
    * @return returns status of the command sent
    public String runCommand() {
    return writeCommand.runCommand();
    * Tries to fech data that is repllied to commands sent. It will wait till it can return something.
    * @return returns data sent by RouterOS
    * @throws java.lang.InterruptedException
    public String getData() throws InterruptedException {
    String s = (String) queue.take();
    return s;
    * returns command that is set at this moment. And will be exectued if runCommand is exectued.
    * @return
    public String getCommand() {
    return writeCommand.getCommand();
    * set up method that will log you in
    * @param name - username of the user on the router
    * @param password - password for the user
    * @return
    public String login(String name, char[] password) {
    this.sendCommand("/login");
    String s = "a";
    try {
    s = this.getData();
    } catch (InterruptedException ex) {
    Logger.getLogger(ApiConn.class.getName()).log(Level.SEVERE, null, ex);
    return "failed read #1";
    if (!s.contains("!trap") && s.length() > 4) {
    String[] tmp = s.trim().split("\n");
    if (tmp.length > 1) {
    tmp = tmp[1].split("=ret=");
    s = "";
    String transition = tmp[tmp.length - 1];
    String chal = "";
    chal = Hasher.hexStrToStr("00") + new String(password) + Hasher.hexStrToStr(transition);
    chal = Hasher.hashMD5(chal);
    String m = "/login\n=name=" + name + "\n=response=00" + chal;
    s = this.sendCommand(m);
    try {
    s = this.getData();
    } catch (InterruptedException ex) {
    Logger.getLogger(ApiConn.class.getName()).log(Level.SEVERE, null, ex);
    return "failed read #2";
    if (s.contains("!done")) {
    if (!s.contains("!trap")) {
    return "Login successful";
    return "Login failed";
    @Override
    public void run() {
    try {
    InetAddress ia = InetAddress.getByName(ipAddress);
    if (ia.isReachable(1000)) {
    sock = new Socket(ipAddress, ipPort);
    in = new DataInputStream(sock.getInputStream());
    out = new DataOutputStream(sock.getOutputStream());
    connected = true;
    readCommand = new ReadCommand(in, queue);
    writeCommand = new WriteCommand(out);
    this.listen();
    message = "Connected";
    } else {
    message = "Not reachable";
    } catch (UnknownHostException ex) {
    connected = false;
    message = ex.getMessage();
    ex.printStackTrace();
    } catch (IOException ex) {
    connected = false;
    message = ex.getMessage();
    ex.printStackTrace();
    }

    I need your help again, i think this is a minor thing.
    i have compiled the class file that i needed and i signed it too. but now it is giving me a new error and need your tip.
    here is the java console loyout and my java file ((i think here is the problem in java file, something must be missing)).
    thanks in advance for any help.
    Java Plug-in 10.17.2.02
    Using JRE version 1.7.0_17-b02 Java HotSpot(TM) Client VM
    User home directory = C:\Users\Administrator
    c: clear console window
    f: finalize objects on finalization queue
    g: garbage collect
    h: display this help message
    l: dump classloader list
    m: print memory usage
    o: trigger logging
    q: hide console
    r: reload policy configuration
    s: dump system and deployment properties
    t: dump thread list
    v: dump thread stack
    x: clear classloader cache
    0-5: set trace level to <n>
    network: Connecting http://192.168.10.100:7778/forms/lservlet;jsessionid=c0a80a6430d6e191eded93774f2f8d1bed73056e66ef.e3mObhiMbxeKe34PahiKbx4Nbh90n6jAmljGr5XDqQLvpAe with proxy=DIRECT
    security: Validate the certificate chain using CertPath API
    security: The certificate hasnt been expired, no need to check timestamping info
    security: Cannot find jurisdiction list file
    security: The CRL support is disabled
    security: The OCSP support is disabled
    security: This OCSP End Entity validation is disabled
    security: Checking if certificate is in Deployment denied certificate store
    security: Checking if certificate is in Deployment permanent certificate store
    basic: updateValidationResultsForApplet update
    cache: Mark prevalidated: http://192.168.10.100:7778/forms/java/ApiConn.jar true tm=1363335797289 cert=1371107987000
    basic: Plugin2ClassLoader.getPermissions CeilingPolicy allPerms
    java.lang.InstantiationException: oracle.forms.siberia.ApiConn
         at java.lang.Class.newInstance0(Unknown Source)
         at java.lang.Class.newInstance(Unknown Source)
         at oracle.forms.handler.UICommon.instantiate(Unknown Source)
         at oracle.forms.handler.UICommon.onCreate(Unknown Source)
         at oracle.forms.handler.JavaContainer.onCreate(Unknown Source)
         at oracle.forms.engine.Runform.onCreateHandler(Unknown Source)
         at oracle.forms.engine.Runform.processMessage(Unknown Source)
         at oracle.forms.engine.Runform.processSet(Unknown Source)
         at oracle.forms.engine.Runform.onMessageReal(Unknown Source)
         at oracle.forms.engine.Runform.onMessage(Unknown Source)
         at oracle.forms.engine.Runform.processEventEnd(Unknown Source)
         at oracle.ewt.lwAWT.LWComponent.redispatchEvent(Unknown Source)
         at oracle.ewt.lwAWT.LWComponent.processEvent(Unknown Source)
         at java.awt.Component.dispatchEventImpl(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
         at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
         at java.awt.Container.dispatchEventImpl(Unknown Source)
         at java.awt.Component.dispatchEvent(Unknown Source)
         at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
         at java.awt.EventQueue.access$200(Unknown Source)
         at java.awt.EventQueue$3.run(Unknown Source)
         at java.awt.EventQueue$3.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
         at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
         at java.awt.EventQueue$4.run(Unknown Source)
         at java.awt.EventQueue$4.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
         at java.awt.EventQueue.dispatchEvent(Unknown Source)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
         at java.awt.EventDispatchThread.run(Unknown Source)
    network: Connecting http://192.168.10.100:7778/forms/lservlet;jsessionid=c0a80a6430d6e191eded93774f2f8d1bed73056e66ef.e3mObhiMbxeKe34PahiKbx4Nbh90n6jAmljGr5XDqQLvpAe with proxy=DIRECT
    Exception in thread "Forms-DialogThread2" java.lang.NullPointerException
         at oracle.forms.handler.JavaContainer.onDestroy(Unknown Source)
         at oracle.forms.engine.Runform.destroyHandlers(Unknown Source)
         at oracle.forms.handler.DialogThread.doAlert(Unknown Source)
         at oracle.forms.handler.DialogThread.run(Unknown Source)
         at java.lang.Thread.run(Unknown Source)
    Dumping class loader cache...
    Live entry: key=http://192.168.10.100:7778/forms/java/,frmall.jar,siberia_jpg.jar,ApiConn.jar,ConcealTextField.jar, refCount=1, threadGroup=sun.plugin2.applet.Applet2ThreadGroup[name=http://192.168.10.100:7778/forms/java/-threadGroup,maxpri=4]
    Done.
    here is my java file
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    package oracle.forms.siberia;
    * This contains connection. Everything should be here,
    * should operate with this class only
    import java.io.*;
    import java.net.*;
    import java.util.concurrent.LinkedBlockingQueue;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import oracle.forms.*;
    * @author janisk
    public class ApiConn extends Thread {
    private Socket sock = null;
    private DataOutputStream out = null;
    private DataInputStream in = null;
    private String ipAddress;
    private int ipPort;
    private boolean connected = false;
    private String message = "Not connected";
    private ReadCommand readCommand = null;
    private WriteCommand writeCommand = null;
    private Thread listener = null;
    LinkedBlockingQueue queue = new LinkedBlockingQueue(40);
    * Constructor of the connection class
    * @param ipAddress - IP address of the router you want to conenct to
    * @param ipPort - port used for connection, ROS default is 8728
    public ApiConn(String ipAddress, int ipPort) {
    this.ipAddress = ipAddress;
    this.ipPort = ipPort;
    this.setName("settings");
    * State of connection
    * @return - if connection is established to router it returns true.
    public boolean isConnected() {
    return connected;
    public void disconnect() throws IOException{
    listener.interrupt();
    sock.close();
    private void listen() {
    if (this.isConnected()) {
    if (readCommand == null) {
    readCommand = new ReadCommand(in, queue);
    listener = new Thread(readCommand);
    listener.setDaemon(true);
    listener.setName("listener");
    listener.start();
    * to get IP address of the connection. Reads data from socket created.
    * @return InetAddress
    public InetAddress getIpAddress() {
    return sock == null ? null : sock.getInetAddress();
    * returns ip address that socket is asociated with.
    * @return InetAddress
    public InetAddress getLocalIpAddress() {
    return sock == null ? null : sock.getLocalAddress();
    * Socket remote port number
    * @return
    public int getPort() {
    return sock == null ? null : sock.getPort();
    * return local prot used by socket
    * @return
    public int getLocalPort() {
    return sock == null ? null : sock.getLocalPort();
    * Returns status message set up bu class.
    * @return
    public String getMessage() {
    return message;
    * sets and exectues command (sends it to RouterOS host connected)
    * @param s - command will be sent to RouterOS for example "/ip/address/print\n=follow="
    * @return
    public String sendCommand(String s) {
    return writeCommand.setCommand(s).runCommand();
    * exeecutes already set command.
    * @return returns status of the command sent
    public String runCommand() {
    return writeCommand.runCommand();
    * Tries to fech data that is repllied to commands sent. It will wait till it can return something.
    * @return returns data sent by RouterOS
    * @throws java.lang.InterruptedException
    public String getData() throws InterruptedException {
    String s = (String) queue.take();
    return s;
    * returns command that is set at this moment. And will be exectued if runCommand is exectued.
    * @return
    public String getCommand() {
    return writeCommand.getCommand();
    * set up method that will log you in
    * @param name - username of the user on the router
    * @param password - password for the user
    * @return
    public String login(String name, char[] password) {
    this.sendCommand("/login");
    String s = "a";
    try {
    s = this.getData();
    } catch (InterruptedException ex) {
    Logger.getLogger(ApiConn.class.getName()).log(Level.SEVERE, null, ex);
    return "failed read #1";
    if (!s.contains("!trap") && s.length() > 4) {
    String[] tmp = s.trim().split("\n");
    if (tmp.length > 1) {
    tmp = tmp[1].split("=ret=");
    s = "";
    String transition = tmp[tmp.length - 1];
    String chal = "";
    chal = Hasher.hexStrToStr("00") + new String(password) + Hasher.hexStrToStr(transition);
    chal = Hasher.hashMD5(chal);
    String m = "/login\n=name=" + name + "\n=response=00" + chal;
    s = this.sendCommand(m);
    try {
    s = this.getData();
    } catch (InterruptedException ex) {
    Logger.getLogger(ApiConn.class.getName()).log(Level.SEVERE, null, ex);
    return "failed read #2";
    if (s.contains("!done")) {
    if (!s.contains("!trap")) {
    return "Login successful";
    return "Login failed";
    @Override
    public void run() {
    try {
    InetAddress ia = InetAddress.getByName(ipAddress);
    if (ia.isReachable(1000)) {
    sock = new Socket(ipAddress, ipPort);
    in = new DataInputStream(sock.getInputStream());
    out = new DataOutputStream(sock.getOutputStream());
    connected = true;
    readCommand = new ReadCommand(in, queue);
    writeCommand = new WriteCommand(out);
    this.listen();
    message = "Connected";
    } else {
    message = "Not reachable";
    } catch (UnknownHostException ex) {
    connected = false;
    message = ex.getMessage();
    ex.printStackTrace();
    } catch (IOException ex) {
    connected = false;
    message = ex.getMessage();
    ex.printStackTrace();
    }

  • Problem with compressing unicode file names in zip file

    Hi Everyone,
    I have a problem while compressing the unicode file name in a zip file. I used the below code for compressing the unicode files.
    String[] source = null;
    // C:\\TestData\\unicode_filename.txt :  unicode_filename.txt is the file created in japanesse language
    source = new String[] {"C:\\TestData\\temp_properties.xml","C:\\TestData\\unicode_filename.txt" };
    byte[] buf = new byte[1024];
    // Create the ZIP file
    String target = "C:\\TestData\\target.zip";
    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(target));
    // Compress the files
    for (int i = 0; i < source.length; i++)
         FileInputStream in = new FileInputStream(source);
         // Add ZIP entry to output stream.
         String fileName;
         File tempFile;
         ZipEntry zipEntry = new ZipEntry(source[i]);
         fileName = zipEntry.getName();
    zipEntry = new ZipEntry(fileName);
    zipEntry.setMethod(ZipEntry.DEFLATED);
    getUTF8Bytes(source[i]);
    // here I'm unable to find the unicode files and not able to understand.
    out.putNextEntry(zipEntry);
    // Transfer bytes from the file to the ZIP file
    int len;
    while ((len = in.read(buf)) > 0) {
    out.write(buf, 0, len);
    // Complete the entry
    out.closeEntry();
    in.close();
    // Complete the ZIP file
    out.close();Please help me how to fix this issue.
    Thanks                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Hi,
    Thanks for your time for looking into my query.
    Please check the below code for debugging the issue and throw your comments/suggestions for fixing the issue.
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    public class ZipTest
      public static void main(String[] args) {
              String[] source = new String[] {"C:\\TestData\\APP_Properties.xml","C:\\TestData\\??.txt" };
              byte[] buf = new byte[1024];
              try {
                   // Create the ZIP file
                   String target = "C:\\TestData\\target.zip";
                   ZipOutputStream out = new ZipOutputStream(new FileOutputStream(target));
                   // Compress the files
                   for (int i = 0; i < source.length; i++) {
                        FileInputStream in = new FileInputStream(source);
                        // Add ZIP entry to output stream.
                        String fileName;
                        File tempFile;
                        ZipEntry zipEntry = new ZipEntry(source[i]);
                        fileName = zipEntry.getName();
                        zipEntry = new ZipEntry(fileName);
                        zipEntry.setMethod(ZipEntry.DEFLATED);
                        getUTF8Bytes(source[i]);
                        out.putNextEntry(zipEntry);
                        // Transfer bytes from the file to the ZIP file
                        int len;
                        while ((len = in.read(buf)) > 0) {
                             out.write(buf, 0, len);
                        // Complete the entry
                        out.closeEntry();
                        in.close();
                   // Complete the ZIP file
                   out.close();
              } catch (IOException e) {
                   e.printStackTrace();
         private static byte[] getUTF8Bytes(String s) {
              char[] c = s.toCharArray();
              FileOutputStream file;
              try {
                   file = new FileOutputStream("C:\\TestData\\output.txt", true);
                   int len = c.length;
                   // Count the number of encoded bytes...
                   int count = 0;
                   for (int i = 0; i < len; i++) {
                        int ch = c[i];
                        if (ch <= 0x7f) {
                             count++;
                        } else if (ch <= 0x7ff) {
                             count += 2;
                        } else {
                             count += 3;
                   // Now return the encoded bytes...
                   byte[] b = new byte[count];
                   int off = 0;
                   for (int i = 0; i < len; i++) {
                        int ch = c[i];
                        if (ch <= 0x7f) {
                             b[off++] = (byte) ch;
                             file.write((byte) ch);
                        } else if (ch <= 0x7ff) {
                             b[off++] = (byte) ((ch >> 6) | 0xc0);
                             file.write((byte) ((ch >> 6) | 0xc0));
                             b[off++] = (byte) ((ch & 0x3f) | 0x80);
                             file.write((byte) ((ch & 0x3f) | 0x80));
                        } else {
                             b[off++] = (byte) ((ch >> 12) | 0xe0);
                             file.write((byte) ((ch >> 12) | 0xe0));
                             b[off++] = (byte) (((ch >> 6) & 0x3f) | 0x80);
                             file.write((byte) (((ch >> 6) & 0x3f) | 0x80));
                             b[off++] = (byte) ((ch & 0x3f) | 0x80);
                             file.write((byte) ((ch & 0x3f) | 0x80));
                   file.write((byte) '\n');
                   file.write((byte) '\r');
                   file.flush();
                   file.close();
                   return b;
              } catch (FileNotFoundException e1) {
                   e1.printStackTrace();
              } catch (IOException e1) {
                   e1.printStackTrace();
              return null;
    }Thanks
    Aravind                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Problem in configuring jar file into a j2me polish project

    look guys i know it might look noobie question but it is realy urgent !!
    i want to add a jar file into a j2me polish project--: i added it as a jar into the resources , put it in a liberary .
    and when i wanted to import it into my classes it was shown in the auto-complete and it showd no error but while i try to comile my project i got this error:
    clean:
    Deleting directory G:\MyWOrk\Polish Projects\NamesMeanings\build
    pre-init:
    pre-load-properties:
    exists.config.active:
    exists.netbeans.user:
    exists.user.properties.file:
    load-properties:
    exists.platform.active:
    exists.platform.configuration:
    exists.platform.profile:
    basic-init:
    cldc-pre-init:
    cldc-init:
    cdc-init:
    ricoh-pre-init:
    ricoh-init:
    semc-pre-init:
    semc-init:
    savaje-pre-init:
    savaje-init:
    sjmc-pre-init:
    sjmc-init:
    nokiaS80-pre-init:
    nokiaS80-init:
    nsicom-pre-init:
    nsicom-init:
    bdj-init:
    post-init:
    init:
    j2mepolish-init:
    j2mepolish:
    J2ME Polish 2.0.7 (2008-11-24) (GPL License)
    Loading device database...
    Processing [2] devices...
    building application for [Nokia/N70] (1/2):
    using locale [en_US]...
    assembling resources for device [Nokia/N70].
    preprocessing for device [Nokia/N70].
    Warning: CSS-Style [focused] not found, now using the default style instead. If you use Forms or Lists, you should define the style [focused].
    Warning: CSS style [title] not found, you should define it for designing the titles of screens.
    processing locale code...
    Warning: unable to resolve path to API "videocontrolbeforeplayer". When this leads to problems, please register this API in [apis.xml].
    compiling for device [Nokia/N70].
    Compiling 320 source files to G:\MyWOrk\Polish Projects\NamesMeanings\build\real\nokia240X320\Nokia\N70\en_US\classes
    G:\MyWOrk\Polish Projects\NamesMeanings\source\src\namesmeanings\main\DirectSearch.java:7: package nmsearch does not exist
    import nmsearch.*;
    G:\MyWOrk\Polish Projects\NamesMeanings\source\src\namesmeanings\main\DirectSearch.java:74: cannot find symbol
    symbol : variable NMSearch
    location: class namesmeanings.main.DirectSearch
    searched=NMSearch.Search(message);
    2 errors
    When an API-class was not found, you might need to define where to find the device-APIs. Following classpath has been used: [C:\Users\Asmaa\J2ME-Polish2.0.7\import\mmapi.jar;C:\Users\Asmaa\J2ME-Polish2.0.7\import\midp-2.0.jar;C:\Users\Asmaa\J2ME-Polish2.0.7\import\cldc-1.1.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/nokia-ui.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/wmapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/mmapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/mmapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/btapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/m3g.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/pdaapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/m3g.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/pdaapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/jsr172.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/wmapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/m3g.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/pdaapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/btapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/jsr172.jar].
    G:\MyWOrk\Polish Projects\NamesMeanings\build.xml:39: Unable to compile source code for device [Nokia/N70]: Compile failed; see the compiler error output for details.
    BUILD FAILED (total time: 9 seconds)pleez i'll be more than thankful if anybody here could help in this.....

    look guys i know it might look noobie question but it is realy NOT* urgent !!
    i want to add a jar file into a j2me polish project--: i added it as a jar into the resources , put it in a liberary .
    and when i wanted to import it into my classes it was shown in the auto-complete and it showd no error but while i try to comile my project i got this error:
    clean:
    Deleting directory G:\MyWOrk\Polish Projects\NamesMeanings\build
    pre-init:
    pre-load-properties:
    exists.config.active:
    exists.netbeans.user:
    exists.user.properties.file:
    load-properties:
    exists.platform.active:
    exists.platform.configuration:
    exists.platform.profile:
    basic-init:
    cldc-pre-init:
    cldc-init:
    cdc-init:
    ricoh-pre-init:
    ricoh-init:
    semc-pre-init:
    semc-init:
    savaje-pre-init:
    savaje-init:
    sjmc-pre-init:
    sjmc-init:
    nokiaS80-pre-init:
    nokiaS80-init:
    nsicom-pre-init:
    nsicom-init:
    bdj-init:
    post-init:
    init:
    j2mepolish-init:
    j2mepolish:
    J2ME Polish 2.0.7 (2008-11-24) (GPL License)
    Loading device database...
    Processing [2] devices...
    building application for [Nokia/N70] (1/2):
    using locale [en_US]...
    assembling resources for device [Nokia/N70].
    preprocessing for device [Nokia/N70].
    Warning: CSS-Style [focused] not found, now using the default style instead. If you use Forms or Lists, you should define the style [focused].
    Warning: CSS style [title] not found, you should define it for designing the titles of screens.
    processing locale code...
    Warning: unable to resolve path to API "videocontrolbeforeplayer". When this leads to problems, please register this API in [apis.xml].
    compiling for device [Nokia/N70].
    Compiling 320 source files to G:\MyWOrk\Polish Projects\NamesMeanings\build\real\nokia240X320\Nokia\N70\en_US\classes
    G:\MyWOrk\Polish Projects\NamesMeanings\source\src\namesmeanings\main\DirectSearch.java:7: package nmsearch does not exist
    import nmsearch.*;
    G:\MyWOrk\Polish Projects\NamesMeanings\source\src\namesmeanings\main\DirectSearch.java:74: cannot find symbol
    symbol : variable NMSearch
    location: class namesmeanings.main.DirectSearch
    searched=NMSearch.Search(message);
    2 errors
    When an API-class was not found, you might need to define where to find the device-APIs. Following classpath has been used: [C:\Users\Asmaa\J2ME-Polish2.0.7\import\mmapi.jar;C:\Users\Asmaa\J2ME-Polish2.0.7\import\midp-2.0.jar;C:\Users\Asmaa\J2ME-Polish2.0.7\import\cldc-1.1.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/nokia-ui.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/wmapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/mmapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/mmapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/btapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/m3g.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/pdaapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/m3g.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/pdaapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/jsr172.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/wmapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/m3g.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/pdaapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/btapi.jar;C:/Users/Asmaa/J2ME-Polish2.0.7/import/jsr172.jar].
    G:\MyWOrk\Polish Projects\NamesMeanings\build.xml:39: Unable to compile source code for device [Nokia/N70]: Compile failed; see the compiler error output for details.
    BUILD FAILED (total time: 9 seconds)pleez i'll be more than thankful if anybody here could help in this.....

  • Problem in running JAR file

    Creating a mobile game using J2ME. The JAR file created by Netbeans IDE when bein run on mobile gives an error: JAR and JAD file did not match.
    Manifest file:
    Manifest-Version: 1.0
    Ant-Version: Apache Ant 1.6.2
    Created-By: 1.5.0_06-b05 (Sun Microsystems Inc.)
    MIDlet-1: Maze, Maze.png, Maze
    MIDlet-Vendor: Unknown
    MIDlet-Name: Maze
    MIDlet-Version: 1.0
    MicroEdition-Configuration: CLDC-1.1
    MicroEdition-Profile: MIDP-2.0
    JAD file:
    MIDlet-1: Maze, Maze.png, Maze
    MIDlet-Jar-Size: 100
    MIDlet-Jar-URL: Maze.jar
    MIDlet-Name: Maze
    MIDlet-Vendor: Unknown
    MIDlet-Version: 1.0
    MicroEdition-Configuration: CLDC-1.1
    MicroEdition-Profile: MIDP-2.0
    Please consider the query..

    Hey I solved the problem in following order
    JLabel jbl = new JLabel(new ImageIcon(getClass().getResource("image/theme.GIF")));I have a tips to all who are absorving in this problem
    that you should check that whether the extension is in capitalletter or small letter in the jar. Follow the format in your coding
    thnx
    best regards
    tanvir

  • Problem creating an jar file!

    Hello.
    I am trying to create an executable jar file using the following command:
    jar cmf MANIFEST.MF game.jar *.classHowever, I keep receiving the following error:
    java.io.FileNotFoundException: MANIFEST.MF (The system cannot find the file spec
    ified)
            at java.io.FileInputStream.open(Native Method)
            at java.io.FileInputStream.<init>(FileInputStream.java:64)
            at sun.tools.jar.Main.run(Main.java:124)
            at sun.tools.jar.Main.main(Main.java:904)Why am I getting this error and how can I correct this?

    Did you create a file called MANIFEST.MF? Is it in the same directory you are in now?
    And by the way, according to what I see when I run the jar command, you need to specify the jar file first, and then the manifest file:Usage: jar {ctxu}[vfm0Mi] [jar-file] [manifest-file] [-C dir] files ...
    Options:
        -c  create new archive
        -t  list table of contents for archive
        -x  extract named (or all) files from archive
        -u  update existing archive
        -v  generate verbose output on standard output
        -f  specify archive file name
        -m  include manifest information from specified manifest file
        -0  store only; use no ZIP compression
        -M  do not create a manifest file for the entries
        -i  generate index information for the specified jar files
        -C  change to the specified directory and include the following file
    If any file is a directory then it is processed recursively.
    The manifest file name and the archive file name needs to be specified
    in the same order the 'm' and 'f' flags are specified.
    Example 1: to archive two class files into an archive called classes.jar:
           jar cvf classes.jar Foo.class Bar.class
    Example 2: use an existing manifest file 'mymanifest' and archive all the
               files in the foo/ directory into 'classes.jar':
           jar cvfm classes.jar mymanifest -C foo/ .

  • Problem in executing jar file

    Hello,
    I have created jar file. after it is double-clicked, the menu form is coming and it is executing correctly. the problem is reading from database but not writing to it. it is now displaying any error msg. y it is happening?
    i am havng database in the same directory where my jar file is.
    Thanks,
    Sri

    maybe you have made an error in the code for reading. execute the jar with the command line: java -jar <jar-file> and then execute the operation. if there is an error it display to you

  • Problem reading a jar file ?!

    Hello,
    I am having a problem finding a class file which is inside a jar(xercesImpl.jar) which is in the classpath. I cant figure out what the problem.
    I suspect it could be because my JVM is not reading the jar correctly.
    When i click on a jar, a dialog box titled "java virtual machine launcher" saying "failed to load main-class manifest attribute .." is displayed.
    Is it that there are executable and non-executable jars, and JVM will execute only the former ones ?
    Or Does this mean somethign is wrong with my JRE/JVM??
    i also tried typing "jar t xercesImpl.jar" (to see if it can print the table of files) and it doesnt do anything, doesnt even return to the prompt.
    I am on win xp and few days back downloaded jdk1.5.0 and uninstalled previous jdk.
    it seems windows has its own jre. i am bit confused which is being used.
    i m a Java newbie, so please forgive my ignorance. Any help appreciated.
    Thank you.

    Hello,
    Well seems you are going through the horror of creating application jar file from command prompt. I went through the same and finally decided to make it through jBuilder. But the trouble persisted and I was getting same error as you were getting till I explicitly specified all the third party jar files I was using in the classpath and the problem was solved.
    I recommend you to explicitly set all the jars in classpath that are being used by your application. Also set the path of any resources if you have any.
    All the best.
    Hemanshu

  • Problem building EJB jar file using Eclipse

    Hi,
    Here's my file sturcture.
    ejb\x\y\z\test\
    ejb\x\y\z\test1\
    'ejb' is the root directory.
    The java source files under 'test' have a package name x.y.z.test.
    The java source files under 'test1' have a package name x.y.z.test1.
    I want to build a EJB jar file for 'test' and 'test1' separately. In eclipse when I create an EJB project, I specify the root folder as the source in the java build path settings. So the project explorer in Eclipse shows both the packages since they are under the same root folder. When I try to do 'Export - EJB Jar File', it includes both the 'test' and 'test1' in the .jar. Is there a way to build them separately ?
    Thanks,

    As far as I know, there is no way in Eclipse to specify a package prefix for a source folder. Assuming that you are not using an operating system with support for symbolic links at FS-level, the only way I can think of solving your problem is via linked folders and includes/excludes.
    1. Create two ejb projects in your workspace. Specify locations somewhere independent of where the root of your source tree is located.
    2. Right click on proj1 and select Properties / Java Build Path / Source.
    3. Click Link Source and specify the location to your source root on disk. Click Next.
    4. In the inclusion patterns section, add a pattern that captures classes appropriate for that module. Click Finish.
    5. Delete the original source directory that was created during project creation before leaving Build Path configuration dialog.
    6. Repeat steps 2-5 on the second project, except specify a different inclusion pattern.
    This should produce a project structure that Eclipse will be happy with, but you have to be a little bit careful. Even though you filtered out classes from the view of the java compiler for a particular project, you will still see them listed in the various navigational views (such as Package Explorer or Project Explorer). Don't modify these filtered out files. The project that is supposed to be building them will not react to changes in the other project. You will have to manually refresh (right click on project and select refresh) the other project before the java compiler will see changes.
    Hope this will help you out.
    - Konstantin

  • Problem in making "jar" file

    Hi ,
    I have to compile , preverify and make jar file using a set of J2ME files.
    And i have completed the first 2 steps (compiling and preverifying).
    I used this code to make jar file:
    jar cvfm F:\Mobile_Magazine_IDE\xxx_test3\Magazine.jar F:\Mobile_Magazine_IDE\xxx_test3\src\MANIFEST.MF  -C  F:\Mobile_Magazine_IDE\xxx_test3\preveryclasses\  . -C F:\Mobile_Magazine_IDE\xxx_test3\src\images\  .
      boolean compile_n_print_output_to_console(String command){
        boolean isCompiled = false;
        try {
          txa_console_output.setText("");
          Runtime runtime = Runtime.getRuntime();
          Process proc = runtime.exec(command);
          InputStream stderr = proc.getErrorStream();
          InputStreamReader isr = new InputStreamReader(stderr);
          BufferedReader br = new BufferedReader(isr);
          String line = null;
          while ( (line = br.readLine()) != null)
            txa_console_output.append(line + new_line);
          int exitVal = proc.waitFor();
          //If this returns any value other than zero ... compilation failed
          if(exitVal!=0){
            call_error_message("Compilation failed ");
          //If this returns zero ... compilation is successful
          else if(exitVal==0){
            isCompiled = true;
            call_info_message("Build successful !");
        catch (Exception ex) {
          isCompiled = false;
          System.out.println(ex);
          com.zone.logger.LoggerClass.log_output(ex);
        return isCompiled;
      }The program is generating the jar file but it does not return a boolean value.
    I think it's because it has not completed the process.
    But no exception is shown.
    I used the same code to compile and preverify , and they work fine.
    And one more thing when i use the same source code and compile those using well known IDE it compiles and works without a problem.
    Can anyone tell me where i have done the mistake ?
    Thanks in advance !

    http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

  • Problem of packing Jar file in Eclipse

    Hello,
    Thanks for looking my post first :D
    My problem is:
    While I run my program in eclipse, it is fine, but after I pack the whole project to a jar file, the interface is running, but the connection function.
    My program is using my computer to connect a GSM device via bluetooth, the GSM device needs an java API (comm.jar, communication API) with an external driver named *.dll. It means not only the jar file need to be imported to eclipse, but also the *.dll file need to be placed in the java path: Java\jre1.5.0_08\bin\*.dll. And also another file called "javax.comm.properties" needs to be placed in Java\jre1.5.0_08\lib\.
    I think the problem of my jar might be these two files not included in the classpath after exported.
    Does anyone could tell me is there any way to put these two files into the classpath after export? Or what kind of problem am I face actually?
    Thanks very much for help!

    The description is rather confusing.
    What computer exactly are you trying to run this stuff on (it doesn't matter what the software does)?
    A shared library normally msut exist in such a way that the OS can find it and it has to be shared library that is meaningful to the OS (a HP shared library is not going to work on a windows box.)
    There is no such thing as the "java path".
    For windows normally dlls will go in the runtime directory of the application. Windows will find it there. If you want to adjust the path then the path is under control panel -> system.

Maybe you are looking for

  • Getting Error:closing a connection for you. Please help

    Hello All, I'm using jboss3.2.6. I used ejb2.1 (session bean and entity bean[BMP]). I did few data base transations in cmp and few in simple data source connection. I'm getting below errors occasionally 'No managed connection exception java.lang.OutO

  • I need to open files in a folder within a photoshop action

    I am writing an action (to be triggered by automator) to take three photos from a tethered camera and open, size, and crop them, and place them in specific locations on a template image to create two photo-booth strips side by side on a 4x6 print.  I

  • IPhoto import Browser failure, after security update?

    Hi, Anyone else had this problem? iPhoto import Browser failure. No Events or Albums show, although PhotoBooth is visible, error message 'Open iPhoto 5 or later to see photos...' This used to work, but not since installing Security Update 2010-006 (1

  • System Pref "Desktop" doesnt work

    Hey guys, In my desktop prefs where i change my desktop wallpaper, everytime i add a new folder to select pictures from, they always add as "aperture projects" and it loads my aperture library. How can i reset this and use an actual folder???

  • Photos fail to print after editing with clone stamp tool and layers

    After editing using the clone stamp tool and using layers the photos fail to print.  I even tried a simple crop edit and the photo failed to print. Photos print without editing.