Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以用不同于类的名称编译java文件吗?_Java - Fatal编程技术网

我可以用不同于类的名称编译java文件吗?

我可以用不同于类的名称编译java文件吗?,java,Java,是否有任何方法可以编译java程序,而不必将java文件名与其基类名称连在一起 如果是这样,请解释。我猜他的意思是.java文件的命名与其中定义的实际类不同 我想这是不可能的。不,公共类名必须与文件名匹配。内部、非公共类名称可能不同 必须有一个与文件名同名的公共类。这是一件非常好的事情。您可以在同一文件中包含辅助类,只要它们不是公共的。但是它们仍然可以是“默认”的,因此它们仍然可以被同一个包中的其他类使用 大多数情况下不应该这样做。Java关于类和包的命名模式是它的一个更大的优势,它使程序员的生

是否有任何方法可以编译java程序,而不必将java文件名与其基类名称连在一起


如果是这样,请解释。

我猜他的意思是.java文件的命名与其中定义的实际类不同


我想这是不可能的。

不,公共类名必须与文件名匹配。内部、非公共类名称可能不同

必须有一个与文件名同名的公共类。这是一件非常好的事情。您可以在同一文件中包含辅助类,只要它们不是公共的。但是它们仍然可以是“默认”的,因此它们仍然可以被同一个包中的其他类使用


大多数情况下不应该这样做。Java关于类和包的命名模式是它的一个更大的优势,它使程序员的生活更轻松,而且不需要花费任何成本。

您的Java文件名应该始终反映该文件中定义的公共类。否则,将出现编译器错误。例如,test.java:

public class Foo {}
尝试编译此文件将提供:

[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

所以您必须让您的文件名与您的公共类名匹配,这似乎使您的问题变得毫无意义。要么我不明白你在问什么。。。花些时间解释一下您实际想要实现的目标将大大有助于提出一个更有效的问题:)

否。您可以在编译.java文件之前编写一个shell脚本来重命名它,但javac要求filenames=类名


(同样在windows中,它不区分大小写,因此ASDF.java可以编译ASDF.class)

您可以使用java编译API编译任何您想要的java源代码,源代码不必来自文件,也可以来自具有不相关名称的文件。这取决于你想开发程序的迟钝程度

是的,您可以为文件(.java)选择任何名称。无论文件中的类名是什么,都意味着类名可能与文件名完全不同。 您应该使用文件名编译程序,并且应该使用主方法所在的类名运行程序。
main方法在不同的类中可能有多个,因此您应该使用要在其中运行main方法的类名来运行它

要回答这个问题,请看这个例子:
创建Sample.java文件

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");
   }
} 
现在您将其编译为
javac Sample.java
并作为
javaa
运行,然后输出将是

hi 
hello
或者您作为
javab
运行,那么输出将是
hello


请注意,没有一个类被标记为
public
,因此为它们提供了
default
访问权限。没有任何公共类的文件没有文件命名限制。

我们可以将文件保存为不同的类名,因为在java中,我们编译程序,但运行方法。
我们必须用文件名编译程序并运行类名是的,可以用不同的文件名编译java源文件,但您需要确保其中定义的类都不是公共的…编译源文件时,会为源文件中的类创建相应的.class文件。

是的,您可以使用任何其他名称保存java源代码文件,该名称与主类名不同,但当您将其合并时,字节码文件名将与主类名相同。因此,为了便于您在java代码运行时不记忆太多名称,您需要将文件名与主类相同,而不仅仅是文件名和字节码文件具有相同的名称。

只要源文件中没有公共类,您就可以将源文件命名为任何名称,并可以进行编译。但是,如果源文件中有一个公共类,则该文件的名称应与类名相同。否则,编译器将抛出一个错误

示例:
文件名:
TestFileName.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello,World\n");
    }
}
编译:
javactestfilename.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello,World\n");
    }
}
错误:

TestFileName.java:1: class HelloWorld is public, should be declared in a file named HelloWorld.java
public class HelloWorld
       ^
1 error

是的,我们编译的java文件的名称与类不同,前提是该文件中不应有任何公共类

如果文件中有任何公共类,那么在这种情况下,您必须将该名称作为文件名。但是,如果您的类不包含任何公共类,那么您可以为您的类指定任何名称

请参考下面的示例以使其更清楚:

文件名:sample.java

 class A 
 { 
   public static void main(String args[])
  { 
    System.out.println("hi in Class A"); 
  }   
 } 
class B 
{ 
 public static void main(String args[]) 
 { 
    System.out.println("hello in class B");
 }
}
class A 
 { 
   public static void main(String args[])
  { 
    System.out.println("You are in Class A"); 
  }   
 } 
class B 
{ 
 public static void main(String args[]) 
 { 
    System.out.println("You are in class B");
 }
}
然后使用(windows)编译它:javac sample.java

 class A 
 { 
   public static void main(String args[])
  { 
    System.out.println("hi in Class A"); 
  }   
 } 
class B 
{ 
 public static void main(String args[]) 
 { 
    System.out.println("hello in class B");
 }
}
class A 
 { 
   public static void main(String args[])
  { 
    System.out.println("You are in Class A"); 
  }   
 } 
class B 
{ 
 public static void main(String args[]) 
 { 
    System.out.println("You are in class B");
 }
}
然后运行它:javaa

输出:A类中的hi

然后运行它:javab

输出:你好,B班


请检查并确认。

如果类不是公共的,您可以使用其他名称保存它,例如如果类名称很简单,则将其保存为Hard.java。 complie->Hard.java 运行->Simple.java 仅通过.java保存java文件。 编译javac.java 运行java yourclassname 例如,如果我的程序主类名是 仅通过.java保存
通过javac.java编译

由java运行A

是的,我们可以使用与类不同的名称编译java文件,前提是该文件中不应有任何公共类

如果文件中有任何public类,那么在这种情况下,您必须将该名称作为文件名。但是如果您的类不包含任何public类,那么您可以为您的类指定任何名称

请参考下面的示例以使其更清楚:

文件名:example.java

 class A 
 { 
   public static void main(String args[])
  { 
    System.out.println("hi in Class A"); 
  }   
 } 
class B 
{ 
 public static void main(String args[]) 
 { 
    System.out.println("hello in class B");
 }
}
class A 
 { 
   public static void main(String args[])
  { 
    System.out.println("You are in Class A"); 
  }   
 } 
class B 
{ 
 public static void main(String args[]) 
 { 
    System.out.println("You are in class B");
 }
}
然后用:
javac-example.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello,World\n");
    }
}
然后运行它:
javaa

output : you are in Class A
然后运行它:
javab

output : you are in class B

请检查并确认。

您可以在java中编写多个主方法,因为java提供了主方法重载,其中主方法也可以重载。编译文件example.java后 编译器创建包含main方法的.class文件,当您使用java运行该文件时,它将运行