Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Java Having trouble compiling my java project. Help?

  1. Feb 3, 2015 #1
    Hey so I have to compile a project... there are two parts to it, one where I just have to display a series of sentence and another one a bit more complicated... Im using tutorialspoint.com because I don't have any compiler on the desktop at school :/ It is unfortunately giving me this error:

    "sh-4.2# javac HelloWorld.java
    javac: file not found: HelloWorld.java
    Usage: javac <options> <source files>
    use -help for a list of possible options"

    However, when I compiled my first program ( the one that I'll post afterwards,) it compiled fine on its own. Any help? ( I started java 2 weeks ago, so many stupid errors might be included, sorry !)

    Code (Text):

    import java.util.Scanner;

     public class SongsAndApps{

      public static void main(String []args){
      Scanner prePay = new Scanner(System.in);
       int songBuy , appBuy1, appBuy, songBuy1 ;
       Double moneyOnCard, moneyLeft, moneyLeft2, moneyLeft3, moneyLeft4;
       final int appCost=3 , songCost= 7;
      System.out.println("Please input the amount of money on your card");
      moneyOnCard = prePay.nextDouble();
                       //Determine how much there is on the card from the user
      songBuy =  (int)(moneyOnCard / songCost) ;
                     //Determines how much song the user is able to buy
      appBuy  = (int)(moneyOnCard / appCost) ;
                     //Opposite of last equation, allows to know how much apps can be bought
      System.out.println("You can buy a maximum of " + songBuy + " songs or you can buy a maximum of " + appBuy + " apps");
      moneyLeft = moneyOnCard - (songBuy*songCost) ;
      moneyLeft2 = moneyOnCard - (appBuy*appCost) ;
                       // moneyLeft represent the money left on the card if songs are bought first and moneyLeft2 represents the amount left if apps are bought
       if (moneyLeft >= 3 );                    
      {  appBuy1 = (int)(moneyLeft / appCost);
      moneyLeft3 = moneyLeft - (appCost*appBuy1);
      System.out.println("You can buy " + appBuy1 + " app if you decide to buy the maximum amount of songs");
      System.out.println("Therefore, You have " + moneyLeft3 + " $ left on your card") ;}
      if (moneyLeft2 >=7);
      { songBuy1 = (int)(moneyLeft3 / songCost);
      moneyLeft4 = moneyLeft3 - (songCost*songBuy1);
      System.out.println("Otherwise. you can buy " + songBuy1 + " song(s) if you decide to buy the maximum amount of apps");
      System.out.println("You have " + moneyLeft4 + " $ left on your card") ; }

    That worked fine when I had it in a project folder alone. However, when I added a new class to the project( the following one, it stopped working)

    Code (Text):
     class MyFirstProgram.Java {
      public static void main(String[] args) {
      System.out.println("Welcome to My First Java Program");
      System.out.println("This Program was written by: Marc-Andre Leclair");
      System.out.println("The assignment was done individually on January 30th, 2015 at 19:34");
      System.out.println("End of program");
    However when I did something like that on eclipse it ran and compiled fine :/ any help?
  2. jcsd
  3. Feb 3, 2015 #2


    Staff: Mentor

    For Java the class name must match the filename so for your non working example the filename should be SongsAndApps.java
  4. Feb 3, 2015 #3
    It is that name which is odd. I know that the class containing the main method has to bear the same name as the file name. That's why im completely confused
  5. Feb 6, 2015 #4


    User Avatar
    Science Advisor
    Gold Member
    2017 Award

    It's a bit difficult to understand where you're having compile problems. At the beginning of your first post, you're trying to compile a HelloWorld program which is not in either of the code examples. However, from the code examples, it looks like you're trying to compile several programs that have a main() method at once using the command line. Usually an IDE like Eclipse will take care of that for you when you choose to compile a 'package' (as opposed to a single class). If that's what you're trying to do with the command line, then you would need to do something like this:

    javac -classpath . SongsAndApps.java MyFirstProgram.java

    Source: Easy command line Java compile
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook