Is there any way to compile a java program without having the java file name with its base class name.
If so, please explain..
Is there any way to compile a java program without having the java file name with its base class name.
If so, please explain..
I guess what he means is the .java file is named differently than the actual class defined inside it.
I guess this is not possible.
No, the public class name must match the file name. Inner, non public, class names may differ.
You must have a public class with the same name as the file name. This is a Very Good Thing. You CAN have secondary classes inside the same file as long as they are not public. They can still be "default" though, so they can still be used by other classes in the same package.
This should not be done for the most part. Java's naming patterns regarding classes and packages are one of the bigger advantages it has--makes a programmers life easier at no cost.
Your Java file name should always reflect the public class defined within that file. Otherwise, you will get a compiler error. For example, test.java:
public class Foo {}
Trying to compile this gives:
[steven@scstop:~]% javac test.java
test.java:1: class Foo is public, should be declared in a file named Foo.java
public class Foo {
^
1 error
So you must have your filename match your public class name, which seems to render your question moot. Either that or I don't understand what you're asking... spending some time explaining what you are actually trying to achieve would go a long way towards asking a more effective question :)
No. You could write a shell script to rename the .java file before compiling it, but javac requires that filenames = class names.
(Also in windows, it's case insensitive, so ASDF.java can compile Asdf.class)
You can use the Java Compile API and compile any java source you wish, the source need not come from a file or could come from a file with an unrelated name. It depends on how obtuse you want to develop your program. ;)
yes, you can choose any name for the file (.java). there is no matter to what are the name of classes in that file means that class names may be totaly different from the file name. you should compile the program with file name and you should run the program with the class name in which the main method exist. main methods may be multiple in different classes so you should run it with the class name in which the main method you want to run......
as i know i m not wrong. for example create a file sample.java with coding
class A
{
public static void main(String args[])
{
String str={""};
System.out.println("hi");
B.main(str);
}
}
class B
{
public static void main(String args[])
{
System.out.println("hello");
}
}
now u compile it as
javac sample.java
and run as
java A
then output will be
hi
hello