JVM Launcer / Jar Files

OK, I finally figured out the executable aspect of running .jar files. After updating and install the JDK 1.4 beta I now receive an error when trying to execute any .jar file on my system. The Error reads "Could not Find Main Class. Program will Exit." this is from the JVM Launcher. What is going on? Someone help please.

you need to create a manifest file with main class specified.
Main-Class: yourpackage.yourmainclass
be sure to include line feed at the end.
jar cvmf manifestFile name.jar classfiles

Similar Messages

  • Jvm parametrs with .jar file?

    Hi,
    Just made a .jar file which is executable. I have the following manifest file
    Manifest-Version: 1.0
    Name: src
    Main-Class: main
    Sealed: true
    Does anybody know how to set jvm parameters? I need to set -Xmx.
    thanks

    how do you do that? I was thinking about using a
    batch file but it doesnt look very good.Create a shortcut (I hope you know how to do that). Right click on the shortcut and select Properties; Shortcut Tab (Win2K/XP I'm assuming). Add the arguments there. The same as you use from command line, except that you call javaw instead of java.
    I guess that should work for you!
    x

  • NOT WORKING: Putting a jar file requiring native library in bootclasspath

    Hi,
    I put my own jar file into the bootclasspath like this:
    java -Xbootclasspath/p:myboot.jar TestClass
    Some classes in the jar require a native library. For JVM 1.3 on Solaris, I put the native library in $JAVA_HOME/jre/lib/sparc and everything works just fine.
    However, when I try the same thing on JVM1.4, I got the following error when my class containing the native methods is called:
    Failed to load the native library: myboot_native
    java.lang.UnsatisfiedLinkError: no myboot_native in java.library.path
    I tried to put that native library in several different directories in jre/lib but still had no luck.
    Is there anybody know the solution? Does JVM1.4 allow me to put a custom jar file that requires a native library in the bootclasspath?
    Regards,
    Eman

    Well is your file in a directory included in the java.library.path environement variable. I use java on windows but I have to add the directory where my native library is to the path variable (not classpath) in order to avoid the error you get.

  • How to load jar file in one shot?

    I have a Java app refers some jar files on remote location. Loading class by class is very time consuming.
    Is it possible to load the jar files as a whole? like what applet does?
    Tried URLClass loading, even run java -jar, still those load class on demand.
    I want the jar file loaded only one time into JVM.

    I don't really understand. When you load a jar file using URLClassLoader it brings over the jar file and extracts the class files from the jar file. It does not bring over the class files as individual class files. If you mean you want to only ever bring over the jar file once then why not just copy the jar file using URLConnection and save it to disk. You can then load the jar file from disk each time the program starts.

  • How to add a Jar file to J2EE Server Component Library ?

    Hello,
    My objective:
    =====================================================
    To add a 3rd party jar file to be a runtime jar file to J2EE Server Component
    Library project.
    I have created a J2EE Server Component Library project. 
    I have built the J2EE Server Component Library project to get the provider.xml file and place the provider.xml under the J2EE Server Component Library project's server folder.
    Here is my problem:
    =====================================================
    I can't open the provider.xml with SAP's special editor for the provider.xml.
    The special SAP editor doesn't exist for me.
    Here is my question:
    =====================================================
    Q1) Do I copy/paste my JAR_X file where <jar_0> is located? (Below is the
          J2EE Server Component Library SDA structure.)
    Q2) If you were to update the provider.xml with notepad, what would you
    type in provider.xml for JAR_X?
    Q3) Is there anything else that I need to do?
    Thanks,
    Steve
    J2EE Server Component Library SDA structure.
    ======================================
    |-META-INF_
    |         |-manifest.mf
    |         |-sap_manifest.mf
    |         |-SearchRules.xml
    |         |-<SDA>.xml
    |         |...
    |-<jar_0>
    |- ...
    |-<jar_N>
    |-dispatcher_
    |           |-provider.xml
    |           |-properties
    |           |-runtime.properties
    |           |-persistent__
    |           |            |-<persistent_files(2)>
    |           |-descriptors_
    |                        |-<descriptor_files(3)>
    |-server_____
    |           |-provider.xml
    |           |-properties
    |           |-runtime.properties
    |           |-persistent__
    |           |            |-<persistent_files>
    |           |-descriptors_
    |                        |-<descriptor_files>
    |-os_libs____
                |-<char set>__
                             |-<platform>__
                                          |-<jvm bitlength>__
                                                            |-<native lib files>

    Thank you for all your solution...
    my provider.xml was missing the <!DOCTYPE> tag for me to use the SAP LibraryDD Editor
    Thanks again,
    Steve
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE provider-descriptor SYSTEM "library.provider.dtd">
    <provider-descriptor>
         <display-name>
          Your_Lib_Name
        </display-name>
         <component-name>
          Your_Lib_Name
        </component-name>
         <major-version>6</major-version>
         <minor-version>40</minor-version>
         <micro-version>0</micro-version>
         <provider-name>
          sap.com
        </provider-name>
         <references>
              <reference
                   provider-name="sap.com"
                   strength="weak"
                   type="library">Your_Lib_Name</reference>
         </references>
         <jars>
              <jar-name>my_jar.jar</jar-name>
         </jars>
    </provider-descriptor>

  • 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

  • How to dynamically load jar files - limiting scope to that thread

    Dynamically loading jar files has been discussed a lot. I have read a quite a few posts, articles, and demo code for doing just that. However, I have yet to find a solution to my problem. Most people modify their system class loader and are happy. I have done that and was happy for a time. Occasionally, you will see reference to an application server or tomcat or some other large project that have successfully been able to load and unload jar files, allow for dynamic deployment of code, etc. However, I have not been able to achieve similar success; And my problem is much less complicated.
    I have an application that executes a thread to send a given file/message to a standard JMS Server Queue. Depending on the parameters selected by the user, this thread may need to communicate with one of a number of JMS Servers, ie. JBoss, WebLogic, EAServer, Glassfish, etc. All of which can be done with the same code, but each needs to load their own flavor of JMS Client Jar files. In this instance, spawning a separate JVM for each communication would work from a classloader perspective. However, I need to keep it in the family and run under the same JVM, albeit each JMS Server Connection will be created and maintained in separate Threads.
    I am close, I am doing the following...
    1. Creating a new URLClassLoader in the run() method of each thread.
    2. Set this threads contextClassLoader to the new URLClassLoader.
    3. Load the javax.jms.JMSException class with the URLClassLoader.loadClass() method.
    4. Create an initialContext object within this thread.
    Note: I read that the initialContext and subsequent conext lookup calls would use the Thread�s
    contextClassLoader for finding/loading classes.
    5. Perform context.lookup calls for a connectionFactory and Queue name.
    6. Create JMS Connection, etc. Send Message.
    Most of this seems to work. However, I am still getting a NoClassDefFoundError exception for the javax.jms.JMSException class ( Note step #3 - tried to cure unsuccessfully).
    If I include one of the JMS Client jar files ( ie wljmsclient.jar for weblogic ) in the classpath then it works for all the different JMS Servers, but I do not have confidence that each of the providers implemented these classes that now resolve the same way. It may work for now, but, I believe I am just lucky.
    Can anyone shine some light on this for me and all the others who have wanted to dynamically load classes/jar files on a per Thread basis?

    Thanks to everyone - I got it working!
    First, BenSchulz' s dumpClassLoader() method helped me to visualize the classLoader hierarchy. I am still not completely sure I understand why my initial class was always found by the systemClassLoader, but knowning that - was the step I needed to find the solution.
    Second, kdgregory suggested that I use a "glue class". I thought that I already was using a "glue class" because I did not have any JMSClient specific classes exposed to the rest of the application. They were all handled by my QueueAdmin class. However...
    The real problem turned out to be that my two isolating classes (the parent "MessageSender", and the child "QueueAdmin") were contained within the same jar file that was included in the classpath. This meant that no matter what I did the classes were loaded by the systemClassLoader. Isolating them in classes was just the first step. I had to remove them from my jar file and create another jar file just for those JMSClient specific classes. Then this jar file was only included int custom classLoader that I created when I wanted to instantiate a JMSClient session.
    I had to create an interface in the primary jar file that could be loaded by the systemClassLoader to provide the stubs for the individual methods that I needed to call in the MessageSender/QueueAdmin Classes. These JMSClient specific classes had to implement the interface so as to provide a relationship between the systemClassLoader classes and the custom classLoader classes.
    Finally, when I loaded and instantiated the JMSClient specific classes with the custom classLoader I had to cast them to the interface class in order to make the method calls necessary to send the messages to the individual JMS Servers.
    psuedu code/concept ....
    Primary Jar File   -  Included in ClassPath                                                      
    Class<?> cls = ClassLoader.loadClass( "JMSClient.MessageSender" )
    JMSClientInterface jmsClient = (JMSClientInterface) cls.newInstance()                            
    jmsClient.sendMessage()                                                                      
    JMSClient Jar File  -  Loaded by Custom ClassLoader Only
    MessageSender impliments Primary.JMSClientInterface{
        sendMessage() {
            Class<?> cls=ClassLoader.loadClass( "JMSClient.QueueAdmin" )
            QueueAdmin queueAdmin=(QueueAdmin) cls.newInstance()
            queueAdmin.JMSClientSpecificMethod()
        }

  • 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.

  • Replacing JAR files loaded by custom ClassLoader

    Hi all,
    I am trying to create an auto-updater for a stand alone application, which can look for new versions of relevant jar files on the internet and download them. I have code which will look for newly downloaded versions and can replace the old jar file with the new one (using simple File methods). This works fine for when the application is started initially, but as the application is a server and may not manually be started for a long time, I am trying to force the server to restart and reload with the new code.
    if(newCode.exists()) {
         System.out.println("new code!");
         if(oldCode.exists()) {
              oldCode.delete();
         if(code.exists()) {
              if(! code.renameTo(oldCode)) {
                        throw new IOException("Error backing up code file");
         if(! newCode.renameTo(code)) {
              throw new IOException("Error installing new code file");
    }I have looked around the forums a bit, and have come up with using a ClassLoader based on URLClassLoader:
    class ProxyLoader extends URLClassLoader
         public ProxyLoader(String jarFile) throws MalformedURLException {
              super(new URL[] { (new File(jarFile)).toURL() });
         public Class findClass(String name) throws ClassNotFoundException {
              System.out.println("Finding: " + name);
              return super.findClass(name);
    }This seems to work OK, as all the classes from the jar file are loaded by this classloader.
    I have a method which can create an instance of the class loader, and load the server application.
    private boolean startProxy(int port) {
         try {
              pl = new ProxyLoader("proxy.jar");
              Class ptClass = pl.loadClass("proxy.POPThread");
              pt = ptClass.newInstance();
              Method ptStart = ptClass.getMethod("start", new Class[0]);
              ptStart.invoke(pt, new Object[0]);
              return true;
         } catch(Exception e) {
              return false;
    }I also have a method to shut down the server:
    private boolean stopProxy() {
         try {
              Class ptClass = pl.loadClass("proxy.POPThread");
              Method ptInterrupt = ptClass.getMethod("interrupt", new Class[0]);
              ptInterrupt.invoke(pt, new Object[0]);
              return true;
         } catch(Exception e) {
              return false;
    }These appear to be working fine, the problem I have however is when I try to rename the existing jar file (proxy.jar) in order to replace it with a new one (proxy.new), the renameTo method on the File object fails. I am guessing that is because the proxy.jar file is still in use by the JVM. I have tried setting the classloader var to null, but this doesnt seem to have any effect.
    My main question is how can I 'free' the jar file so that it can be replaced with new code? Is it possible? My only otherway of working around this is to have a variable stored in a file pointing at the 'current' code, but the jar file isn't litterally replaced.
    This is a standalone application, which will probably run in a startup script on a server, so webstart isn't really an option.
    TIA
    iklesteve

    I have found this to be true anytime I try to use the renameTo() API to rename a file with a .jar file extension (regardless of the actual file type - i.e. it could be a text file with .jar appended and it will still fail) in the case where the class making the renameTo() call is loaded from another .jar file.
    I run the same exact code after extracting from the .jar, then the rename to the other .jar file is successful. Also, if I rename the .jar file to a ".ja" file, I can successfully rename the jar file even if the code is running with the context of another .jar file.
    Is this some kind of bogus security measure within the JVM or is it a bug?

  • JRockIt Deleting JAR files - Error loading class

    Hi there,
    Customer is facing a very weird issue. Their application has an application that contains some EJBs and Web applications that, apparently for no reason, it starts to unload classes and delete JAR files and WAR files from the Weblogic's "extract" directory. If I bounce the application, everything starts working fine until a moment where the issues starts again.
    I thought this was any kind of memory issue that was not allowing the JVM to free enough resource for loading the classes again after unloading it. But we gave enough memory for the JVM and it stills happening.
    Thoughts? Any idea that might help us on troubleshooting is very welcome at this time.
    Thanks in advance,
    Davi

    e-blade wrote:
    Manifest-Version: 1.0
    Class-Path: lib/tools.jar
    Created-By: 1.6.0_18 (Sun Microsystems Inc.)
    Main-Class: MainThe line in bold means: when app.jar will be run, it will look for additional classes in <same OS directory as itself>/lib/tools.jar.
    It does not mean that it will look inside itself in the JAR directory /lib/tools.jar.

  • Using loadjava utility to load a 3rd party jar file

    Hi Folks,
        I need to validate if a java class, stored into an Oracle Database, is able to connect to a SQLite database.
        In order to connect to SQLite I'm using the the jar file sqlite-jdbc-3.7.2.jar that I got from  https://bitbucket.org/xerial/sqlite-jdbc/downloads
        Then I tried to load the jar file into Oracle Database using the command:
        loadjava -resolve -user system/xpto@tm014_23 -schema novacap sqlite-jdbc-3.7.2.jar
        The result is a series of error messages with the error code ORA-29533.
        Ex: - Attempt to overwrite class or resource org/sqlite/Codes while defining or compiling SYSTEM.org/sqlite/Codes
        Can you guys help me?
    Thanks,
    Luis

    I need to validate if a java class, stored into an Oracle Database, is able to connect to a SQLite database.
    You need to explain that a little more.
    How could a java class within Oracle connect to a SQLLite database if the driver it needs isn't already loaded into Oracle.
    The fact that you have to load the driver jar file tells you that the class will not be able to connect to SQLLite.
    The recommended way to develop with 'Java in the database' is to first write and test the code OUTSIDE the database. Then when it works load it in the databse.
    So use a copy of the Java class and test it outside the database to see if it can connect.
    Also since 11g you could just load that jar as a 'database resident' jar file. If you don't do that then Oracle just extracts all of the files in the jar and tries to load them one at a time. So using 'resolve' won't work because Oracle isn't going to load the classes in the proper order.
    See 'database resident jars' in the Java Dev Guide
    http://docs.oracle.com/cd/B28359_01/java.111/b31225/chtwo.htm#BEJCBAHI
    Database Resident JARs
    Starting with 11g release 1 (11.1), when you load the contents of a JAR into the database, you have the option of creating a database object representing the JAR itself. In this way, you can retain an association between this JAR object and the class, resource, and source objects loaded from the JAR. This enables you to:
      Use signed JARs and JAR namespace segregation in the same way as you use them in standard JVM.
      Manage the classes that you have derived from a JAR while loading it into the database as a single unit. This helps you to prevent individual redefinition of the classes loaded from the JAR. It also enables you to drop the whole set of classes loaded from the JAR, irrespective of the contents or the continued existence of the JAR on the external file system, at the time of dropping it.
    In order to load a JAR into the database, you have the following options of the loadjava tool:
      -jarsasdbobjects
      -prependjarnames
    For more information regarding the loadjava tool options, refer to "The loadjava Tool" section.

  • Updating a JAR file in a shared folder

    Hi,
    I have a JDK 6 Swing app running in a Windows Terminal Server. All users share the same JAR file. I start it using a bat file something like this:
    start /b c:\progra~1\java\jre\bin\javaw -jar gestor.jarAll works fine when users share the same JAR.
    However, when I try to update JAR file to a new version, "sometimes" (not always) when there are some users with JAR file running by JVM, it occurs some strange behaviours with the app, errors like JVM would become lost/crazy with a JAR in RAM and other JAR in disk.
    Is not this a good approach to update the app? Is it better to disconnect all users before update app?

    I don't know what SUNs policy on this is. But if I were you, I'd create a link (shortcut in windows) to the JAR file, and when you have a new version, put it in the same folder as the previous release, but with a different name, and update the link/shortcut. Users should only know about the link/shortcut. Depending on the behaviour of the windows shortcut, users using the JAR file will still use the old file as you update the link to point to the new file. Feasible?

  • Error while Building Jar files using [ejbc]

    Hi,
    I am building EJB's using [ant ejbc] for upgrade from Weblogic 6.1 to Weblogic 10.0. The code gets build fine but when creating the Jar file it is throwing me the following error :-
    [ejbc] Loading properties file: /C:/dev/MarketingOne/thirdparty/sms/lib/logging.//config/logging.properties
    [ejbc] SMS_ERROR:
    [ejbc] Properties:
    [ejbc] - Failed to load properties file: /C:/dev/MarketingOne/thirdparty/sms/lib/logging.//config/logging.properties
    [ejbc] java.io.FileNotFoundException: C:\dev\MarketingOne\thirdparty\sms\lib\logging.\config\logging.properties (The system cannot find the path specified)
    [ejbc] - Either invalid SMS_HOME: /C:/dev/MarketingOne/thirdparty/sms/lib/logging./ or invalid <I>SERVICE</I>_P
    ROPERTIES_FILE_NAME
    [ejbc] at java.io.FileInputStream.open(Native Method)
    [ejbc] please set SMS_HOME using -D option at JVM start up.
    Can anybody provide me with a solution for this as the path mentioned for SMS Logging.properties file is correct..??

    Actually the folder 'lib' consists of a logging Executable Jar file and the SMS folder consists of 'config' and 'lib' folders. Inside the 'config folder is a logging.properties file.
    But Actually I am not getting any idea as to from where this command is being triggered because my targets.xml file does not have any such command whereas it just builds all the files and then creates the jar file.
    Is it a problem of using EJB 2.0 in Weblogic 10.0 environment or jdk1.5..??

  • Help---- creation of jar file

    hi,
    i have developed a application with swing concept and mysql as my database... now i am trying to create jar file for my application... in the manifest file i have given like this:
    class-path: C:\Program Files\MySQL\mysql-connector-java-5.0.4-bin.jar;C:\Program Files\Java\jdk1.5.0\bin;
    Main-Class: Login
    but still it throws an exception that main class: could not be found:
    can any one help me...
    Thank u in advance..
    Abdul

    For a classpath it is easy to forget to add code]//.;[ to the classpath and you also want to add %CLASSPATH%; as well
    example classpath=.;%CLASSPATH%;...........rest of libs/jars the dot tells jvm to search current directory just like in DOS
    Sean

  • Problems with creation of JAR file

    Hi!
    I can't succeed in creating a JAR file for my application.
    I've followed the guide at http://java.sun.com/docs/books/tutorial/deployment/jar/basicsindex.html
    but apparently im doing something wrong....
    I've tried doing an extra Manifest file aswell as "Setting an Entry Point with the JAR Tool" as written in the guide. noen with success however :(
    I always get the error "Could not find the main class. Program will exit." from the JVM when I try to run my JAR file.
    Structure of my program:
    C:\searchpath\moresearchpath\projectname\src\
    inside src\ there are 3 packages called; "graphic", "client" and "server".
    I want to make a JAR file from the files in the "server" package. The "server" package consists of these following 4 files(and nothing more); "ClientHandler.java", "TestServer.java", "ServerModel.java", "ServerController.java".
    "TestServer.java" is my main class!
    This is an example of a command I've done in order to try to make a JAR file:
    "C:\searchPathToWhereJavaIsInstalled\jdk1.6.0\bin\jar cvfe sgwserver.jar server.TestServer server\*"
    This doesn't generate any error. However when I try to start the .jar I get following message "Could not find the main class. Program will exit."
    I've also tried creating manifest file manually but without success (with UTF-8 encoding and not double .txt ending on file)
    This is how the "Manifest.txt" file has looked when I've tried making one:
    Main-Class: server.TestServer
    I have used Netbeans 5.5 and Java SE 6 for development
    What am I doing wrong? Please help me :(

    If I try to run the one generated from Netbeans I get the following error message: "Failed to load Main-Class manifest attribute from C:\searchpath\moresearchPath\projectName\dist\projectName.jar"
    The thing is I need 2 JAR files, one that contains the files in the "server" package and one that has all other files. The other one is an applet and the files in "server" package are a standalone application.
    How do I get the standalone application's JAR file to work?

Maybe you are looking for

  • All embedded videos in internet articles and on Youtube play sound but no picture

    My problem only started about 2 weeks ago . Before that I could directly play any video that was on Youtube or any video embedded in an internet download. Now the video plays, in the sense that I have sound and the elapsed-time bar moves along the bo

  • Moving from Std Out in Java

    Greetings: I am working with an application that I am building that basically works with the backend of Java and currently my program uses System.out.printlin() to do the output. This shows me that part 1 is working and I am still and extreme newbie.

  • Data transfer from Preprod to Prod

    Hi We had an issue in BI where the database table got deleted in production for one of the infocubes. We are doing a restore of Production data back up into Preproduction and then take the data from a praticular infocube to the production. Now ,my qu

  • Recorded waveform not visible in region

    Hi. I had to re-record a backing vocal track on a song I am working on. I was experimenting with the Sample Editor on the original track and, basically destroyed it. However, the new track doesn't show a waveform in the region. It was visible while r

  • Locking The Orientation Of The Flex Mobile Application on Android Device

    Hi all,           I have developed an application using Adobe Flash Builder Burrito and installed it on my android device,Samsung Galaxy Tab. I want to lock the orientation of my application to landscape even when the device is in portrait position.