Java can't find main class when manifest has certain JARs on it

I recently wrote an Ant script that builds my application and jars it up, creating a manifest in the process. The manifest specifies the main class and a classpath that mentions other jars that exist in the same directory. Everything works as expected and I am able to run the program using "java -jar abc.jar".
However, I recently started using classes in my program that come from a jar that should (according to the company I work for) reside in a central location rather than each application having its own copy. So, I changed my build script to reference those shared jars in a common location. But now when I run "java -jar abc.jar", I get a java.lang.ClassNotFoundException: com.example.Main. If I edit the jar's manifest and manually remove the new jars from the classpath, the ClassNotFoundException error goes away (although obviously that causes other problems.) Is there something about adding those new jars to the manifest classpath that would prevent Java from finding my main class? My manifest looks something like this and the last two jars (the ones with the absolute paths) are the jars that seem to be the root of the problem.
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 1.5.0_04-b05 (Sun Microsystems Inc.)
Main-Class: com.uprr.app.rsa.Main
Class-Path: acegi-security-1.0.6.jar commons-codec-1.4.jar commons-htt
pclient-3.1.jar commons-lang-2.4.jar commons-logging-1.1.1.jar common
s-pool-1.5.4.jar dom4j-1.6.1.jar jakarta-oro-2.0.8.jar jaxen-1.1.1.ja
r jibx-run-1.2.1.jar joda-time-1.6.jar jsr173_1.0_api.jar log4j-1.2.1
5.jar opensaml-1.1.jar spring-2.5.2.jar stax-api-1.0.1.jar wstx-asl-3
.2.9.jar xmf-3.0.2.jar xmlsec-1.4.1.jar C:\software\tibco\ems\clients
\java\jms.jar C:\software\tibco\ems\clients\java\tibjms.jarAny ideas?
Brandon

I still don't know why giving the absolute classpath entry like that would cause Java to be unable to find the jar's main class, but I did make an interesting discovery. If I give the absolute path without the drive letter, is able to find the main class again. Something like this won't work...
Class-Path: C:\software\tibco\ems\clients\java\tibjms.jarBut something like this will...
Class-Path: \software\tibco\ems\clients\java\tibjms.jarBut I'd still like to know why Java doesn't accept drive letters when running on a Windows machine. After all, what if my manifest needed to reference a jar that was on a different drive, like a network drive (since this whole problem came up as a result of shared common jars that need to exist outside of the project.)

Similar Messages

  • Can not find Main Class - Can't Run Application

    I have at this for a while and it is drivng me crazy... I have an application that I want execute in a bat file. I have checked the runtime environment by executing java and javaw, both which give option on error messages. I have set the classpath to point too the class subdirectory. Here it is.., Every time I execute the bath file or execute the javaw command, I get the "Can not find main class" message.
    I am using XP ...
    Help please...
    Thanks for all your help.

    when you set the classpath I presume you mean that your running java or javaw as:
    javaw.exe -cp %classpath%;.;c:\library\myfiles com.mycomp.myapp.MainClassIf your using a jar then you must specify the jar in the class path.
    Don't presume it will find the jar. Other than that, you will have
    to provide more details.

  • CAN NOT FIND MAIN CLASS

    Why after i have unzipped and edited the classes in the jar file and zipped them together again, it gives me the message "CAN NOT FIND MAIN CLASS"?
    This is after i have edited any class in the .jar zip.I did not edit the Manifest text file,can someone who has experienced this problem show me how to overcome it.
    Thank you.

    i think you have to read the "java tutorial on Jar files".
    i guess after you have exracted the .jar file then you've edited the ".class"(i dont know how you did it) but i think you mean ".java" you should create another .jar file to be able to reflect the changes you have made, then set the main-class attribute of the newly created .jar file.

  • Can't find main class - program will end

    Dear forum readers,
    Recently upgraded from Win2k pro to XP pro .. installation ran to conclusion w/ no fatal errors BUT upon booting new system I now receive an error message "Java Virtual Machine Launcher can't find main class, program will end" .. I am not aware that this error is causing any problems BUT it is annoying and I'd like to be able to fix the problem so I don't have to close the error message at each startup .. please help!
    Thanks in advance, Larry

    Try this
    java -XbootClasspath/a -jar <<Prog name>>
    I think you are trying in windows XP.
    Also you need to modify if there are any other jars to be reference. For eg if a.jar is also required for this try as below
    java -XbootClasspath/a:a.jar -jar <<Prog name>>

  • Installing 10g on Windows XP machine JVM launcher "Can't find main class"

    I am trying to install 10g Release 2 on a Windows XP machine. I downloaded the zip from the OTN. Unzipped the file. No problems. Tried to run the OUI, it opened up a shell and said to wait. The shell closed and a message frome the JVM Launcher displayed "Can't find main class. Program will exit." I have seen several people on this and other discussion boards having this problem, but have yet to get a solution. Please help.

    What's the value of CLASSPATH environment variable? Possibly a non-oracle application has set this variable and the installer catches it. If there is such a variable, comment it out and try again.

  • "Could not find the main class" when running a jar

    Hi, I'm trying to create and run a jar from my application, but I can't figure out how to properly set an entry-point. Looking at the Java Tutorials http://java.sun.com/docs/books/tutorial/deployment/jar/index.html I still can't get it to work.
    I have a directory myApp, which contains a directory images and some class files, including mainClass.class. I also have a manifest Manifest.txt in the directory myApp with the following line:
    Main-Class: mainClass.class
    + one empty line
    I create a jar successfully, while inside the myApp directory, with the following command:
    jar cfm myApp.jar Manifest.txt *.class images\*.*
    I then proceed to run the jar with the following command:
    java -jar myApp.jar
    and receive the following error:
    Exception in thread "main" java.lang.NoClassDefFoundError: myApp/class
    My completely uneducated guess is that there is something wrong with my manifest. The tutorial says that the line should be:
    Main-Class: MyPackage.MyClass
    I'm assuming that I get the error because I didn't specify a package, which I didn't do because I didn't know what to put there. Do I even have a package?
    Can anyone tell me what I've done wrong? thanks.
    Message was edited by:
    SmurfZG

    One problem is you are specifying a file name instead of a class name. It probably should beMain-Class: mainClassA good test is to run your app before jaring it - if you run it with "java mainClass" then the Main-Class attribute must be mainClass.
    Also class naming conventions say that class names should start with a capital letter - MainClass for example. It is just a convention, but it is easier to get help when you follow conventions.

  • Jar file could not find main class.. I cant see why?

    I have read loads of tutorials on this and it should be very straight forward but i STILL cant make a working jar file of my program.. please see if you can see anything wrong with what im doing..
    my program is one .java file that compiles perfectly, and is runnable both through eclipse and by using the command prompt.. i made a jar file using both eclipse and the command prompt, and neither worked.. every time i run it by double clicking it i get the error "could not find main class, program will exit". here is the contents of my jar:
    CorePackage\IPEmailer.class
    CorePackage\IPEmailer$1.class
    CorePackage\IPEmailer$SMTPAuthenticator.class
    META-INF\MANIFEST.MF
    the MANIFEST.MF file contains:
    Manifest-Version: 1.0
    Class-path: .
    Created-By: 1.6.0_02 (Sun Microsystems Inc.)
    Main-Class: CorePackage.IPEmailer
    (yes there is a blank line at the end)
    the class mentioned in 'Main-Class' has a main method that looks like this:
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new IPEmailer();
    }the program uses 2 external jar files:
    activation.jar
    mail.jar
    and reads a file called:
    ipemailer.ini
    and writes a file called:
    ip.txt
    the program has no GUI and is intended to run 'silently' in the background
    please help me understand what is wrong with this

    package CorePackage;
    import javax.mail.*;
    import javax.mail.Authenticator;
    import javax.mail.PasswordAuthentication;
    import javax.mail.internet.*;
    import java.util.*;
    import java.io.*;
    import java.net.*;
    public class IPEmailer implements Runnable{
          * @param args
         String recipientsinput[]={""};
         String subject;
         String body;
         String server;
         String user;
         String pass;
         String from;
         String urlString = "http://www.whatismyip.org";
         String currentIP;
         String ipFromFile;
         boolean webFailed;
         long interval = 900000; //15 mins
         long oldInterval;
         Thread t = new Thread(this);
         public static void main(String[] args) {
              // TODO Auto-generated method stub
              new IPEmailer();
         public IPEmailer(){
                         ..........etccould the problem be that the class is a thread? i cant see why it would be, but ive never made a jar where the main class also 'implements runnable'

  • Unable to find main class

    Hello
    I am running Windows 2000 and can not launch Jdeveloper. I get two messages:
    1. The Oracle Java Virtual Machine is not installed.
    2. Unable to find main class, Class specified is: oracle/ideimpl/IdeMain
    I have downloaded jdev9i_902.zip and unzipped it to e:\jdeveloper.
    I downloaded jdk1.3.1_03 and jre1.3.1_03 annd installed them. Next I set JAVA_HOME to e:\jdk1.3.1_03 and added e:\jdk1.3.1_03\bin to my PATH.
    I changed SetHavaHome in jdev.conf to:
    SetJavaHome e:/jdk1.3.1_03
    If I leave this commented out I do not get error #2 listed above, but nothing else happens.
    I also left SetUserHomeVariable JDEV_USER_DIR blank and also tried SetUserHomeVariable JDEV_USER_DIR e:/jdeveloper.
    When I run InstallOJVM.bat I get the following
    E:\jdeveloper>InstallOJVM.bat e:/jdeveloper
    Error: cannot find JDeveloper installation in "E:\"
    I notice that the Install.html document makes a reference to <jdeveloper_root>\jdev\bin\jdev.conf. All the files were unzipped in one directory. There is not a directory structure (ie \bin).
    Oracle is installed on a network server. I have the Oracle 9i client on my workstation. Does Oracle need to be installed locally?
    Can anyone tell me what I am missing?
    Thanks

    This is the key piece of information:
    I notice that the Install.html document makes a reference to <jdeveloper_root>\jdev\bin\jdev.conf. All the files were unzipped in one directory. There is not a directory structure (ie \bin).
    If you unzipped jdev9i_902.zip using WinZip, be sure the "Use Folder Names" option is checked at the time you extract the archive, so that the directory structure will be preserved during extraction. You should be able to verify in WinZip that jdev9i_902.zip does have a directory structure.

  • Newbie error - cannnot find main class!

    Once again, I'm stuck on the same piece of code, but this time with... drum roll, enhancements (Some would say I'm improving at this Java thing!) So far, here's my code; (Converting temperatures)
    public class TempConvert {
    public static float convertCtoF(float c) {
    float f = 0;
    f = ((9.0f / 5.0f) * c) + 32.0f;
    return f;
    public static float convertFtoC(float f) {
    float c = 0;
    c = (f - 32.0f) * 5.0f / 9.0f;
    return c;
    public static void main(String[] args) {
    String convType = args[0];
    String temp = args [1];
    float amount = Float.parseFloat(temp);
    if (convType == "f")
    TempConvert.convertCtoF(amount);
    else
    if (convType == "c")
    TempConvert.convertFtoC(amount);
    Compiles fine, but when i run it with any two arguments it says "Could not find the main class". This has me a bit confused. An explaination would not go amiss.
    Also, when I'm comparing 'convType' to see if it is 'f' or 'c', is it correct to use == or should I be using convType.equals("f") or c. I dunno!
    Thanks in advance anyone!

    I'm running this from JPad Pro and TextPad with both the .java files and .class files compiled (or whatever you call it... wow, how much of an idiot can i make of myself?!) in the same folder. I get this error when i run it from JPad Pro as it seems to be the only program that I have that I can run arguments from.
    Also, when i run it from the cmd shell, TempConvert -f 10, for example, it simply does nothing. litterally. it doesn't hang or anything, just does nothing!
    Since convType is a String, you must use the
    equals method.Thanks for clearing that one up! :) And thanks for your time and swift reply!

  • Could not find main class program will exit error while installing Oracle Client 32 bit on windows 7 32 bit OS?

    Hi Experts,
    When I am installing Oracle client 32 bit software on Windows 7 32 bit I am getting error as "could not find main class program will exit"
    I have tried installing latest Java software 7 also JDK 1.6.0_34 still I am getting the same problem below is my " oraparam.ini " details
    [Oracle]
    DISTRIBUTION=TRUE
    SOURCE=../stage/products.xml
    LICENSE_LOCATION=
    BOOTSTRAP_COMPS="oracle.swd.oui:11.1.0.6.0,oracle.swd.oui.core:11.1.0.6.0,oracle.jdk:1.5.0.1.1"
    JRE_SCRATCH_LOC=jdk/jre
    JRE_MEMORY_OPTIONS=" -mx96m"
    DEFAULT_HOME_LOCATION=product\11.1.0\client
    DEFAULT_HOME_NAME=OraClient11g_home
    NO_BROWSE=/net
    NLS_ENABLED=TRUE
    BOOTSTRAP=TRUE
    EXT_JLIB=../stage/ext/jlib
    OUI_VERSION=11.1.0.6.0
    ## JRE_VERSION is only for Windows. This is to copy accessbridge dlls
    JRE_VERSION=1.4.2
    ACCESS_DIR=../install/access
    #SHOW_HOSTNAME=ALWAYS_SHOW shows the hostname panel always
    #SHOW_HOSTNAME=NEVER_SHOW does not the hostname panel
    #SHOW_HOSTNAME=CONDITION_SHOW shows the hostname panel on condition
    SHOW_HOSTNAME=NEVER_SHOW
    #THIN_JDBC_FILENAME is optional and defaults to classes12.jar
    #The value specified for this should be packaged with OUI, and should
    #be relative to <OUI expanded stagedir>/jlib/
    THIN_JDBC_FILENAME=classes12.jar
    #RUN_OUICA specifies the batch script name that needs to be run
    #The script is ouica.bat for win32, and ouica.sh for solaris.
    #If the value is not specified, then the OUICA script is not run
    RUN_OUICA=ouica.bat
    CLUSTERWARE={"oracle.crs","10.1.0.2.0"}
    SILENT_VARIABLE_VALIDATION=TRUE
    [Generic Prereqs]
    MIN_DISPLAY_COLORS=256
    [IMAGES]
    FILE1=images/billboards.gif
    LICENSE_LOCATION=license.txt

    Duplicates of the other two times you asked this question:
    https://forums.oracle.com/thread/2559093
    https://forums.oracle.com/thread/2558027
    (and this time, your question does not appear to have anything to do with this particular forum space, either)
    Duplicate is locked.
    Do not EVER multi--post.   That is extremely bad forum etiquette.

  • JAR: - Could not find main class

    I'm sorry, I know this issue has been posted before but I am a bit confused with my situation.
    After making a jar on my computer, I run it, and the program loads and runs perfectly.
    However, when I try the jar on someone else's computer, it doesn't work, and gives the "could not find main class" message. The other computer has JRE but not JDK, so I don't know if that makes a difference.
    Anyways, my main class file is located in a package called hw2, and the whole project is located in a folder called HW2. So my class file is located in something like C:\School\HW2\hw2\Main.class.
    My Manifest.txt file is located in the \School\HW2 directory and has the following with a new line at the end:
    Main-Class: hw2.Main
    At the command prompt, I go to my C:\School\HW2 directory and I type the following to create the jar:
    jar cvmf Manifest.txt test.jar hw2\*.class
    My jar file has the following contents:
    META-INF/
    META-INF/MANIFEST.MF
    hw2/Bank.class
    hw2/GUIInterface.class
    hw2/Main.class
    Did I write the manifest.txt file correctly? Am I in the right directory when creating the jar file? Am I executing the jar command wrong? How come it works on my computer but not on someone else's?

    Are you certain you're executing the jar in the same way on both machines?
    For example, are you sure you're not executing the unjarred class files when you run on your local machine?

  • Swf can't find custom classes after publishing....

    Hi everyone,
    So this is probably an easy thing I don't know, I'm hoping.
    But when I publish my project and test it in a normal HTML, the swf can find some classes but not others for some reason?
    How can I make sure all the classes get compiled into the Swf?
    I got the main timeline calling the first class (CalypsoPlayer); and it finds this class find -- which is under the same class path.
    But CalypsoPlayer can't find the class it needs, even though it's under the same class path as the class.
    I've tested the project in Flash itself and it all works great without any errors so I'm not sure what's going on.  It's only when I test
    the published SWF that it can't find all the classes it needs.
    I appreciate anyones help -- Stan

    Hey Dan,
    My mind just stopped for an hour and I wasn't thinking straight on this issue, lol.  I thought I deleted this posting but apparently
    I didn't.
    Thanks for your help but this issue was just a result of a mind that had too much coffee and not enough energy .
    - Stan

  • Background callable object :  can not find this class name

    Hi All ,
                  I am following this tutorial link for creating background callable object
    http://help.sap.com/saphelp_nwce10/helpdata/en/9a/e8934258a5ca6ae10000000a155106/frameset.htm
    I have created java and enterprise application DC and deployed successfully. But while creating CO in design time when i am selecting application and entering class as com.examples.bckgco.UserDetailsCallableObject  for Implementation Class Name , and on click next i m getting exception as  "can not find this class name".       package and class name are correct still getting this excetpion message. Plz help me to resolve this solution.
    Regards
    Kavita

    Hi, kavita.
    First, make sure you choosed the correct container when you created the background CO.
    Second, make sure your package name was "com.examples.bckgco" and class name was "UserDetailsCallableObject". The exception  which you got just means you entered incorrect name.
    It doesn`t relate to your program.
    Best Regards.
    Louis Huang.

  • Can't find photo's when trying to sync ipad to itunes

    can't find photo's when sycing ipad to itunes

    I also am having problems.  I have the newest ipad (4 and mini both) and also all software is up to date.  My itunes is 11.0.5 which is the most up to date version.  First off my ipad has over 7 GB of photos on it which is taking up too much space.  I want to delete my Photo Library which is apparently all photos off my laptop that got synced to my ipad.  The ipad itself will not allow a delete option in this Photo Library.  Additionally the new version of itunes does NOT have a Photo tab or option to click or otherwise which photos to sync.  It's as if photos through itunes was removed in their new software version.  Anyway...... I can not delete or remove from my ipads the photos that came from my main computer.... the only photos able to be deleted are those that I actually took from my ipad.  This is also true for my husbands iPhone 5....   Please help   Thank you

  • Can't find textbox class - help please!

    I'm posting this again, in the hope that more people might help. I already know that the error means that the compiler can't find the class Textbox. I need to know why, because I've copied the relevant parts of the code from another app that builds fine. So why won't this build?
    I'm trying to write and build my first J2ME app. My code starts:
    import javax.microedition.lcdui.*;
    import javax.microedition.midlet.*;
    import java.lang.Math;
    public class TestMIDlet
    extends MIDlet
    implements CommandListener
    private Textbox tbMain;
    public void startApp()
    The build fails with numerous errors of which the first is:
    C:\WTK22\apps\TestMIDlet\src\TestMIDlet.java:9: cannot find symbol
    symbol : class Textbox
    location: class TestMIDlet
    private Textbox tbMain;
    with the caret under the 'T' of Textbox
    I don't understand what's wrong with this, as it's in many of the sample apps I've looked at.
    Thanks
    Ed

    Thanks very much!
    I've lost count of the times I've been caught by that case-sensitivity thing in Javascript. I thought it was just the first letter that had to be capitalised. Progress at last!

Maybe you are looking for