Можно ли скомпилировать java файл с другим именем, чем класс?

Есть ли способ скомпилировать java-программу без имени java файла с его именем базового класса.

Если да, объясните, пожалуйста.

Ответ 1

Ваше имя файла Java всегда должно отражать открытый класс, определенный в этом файле. В противном случае вы получите ошибку компилятора. Например, test.java:

public class Foo {}

Попытка скомпилировать это дает:

[[email protected]:~]% javac test.java
test.java:1: class Foo is public, should be declared in a file named Foo.java
public class Foo {
       ^
1 error

Таким образом, вы должны указать свое имя файла для своего публичного имени класса, что, похоже, делает ваш вопрос спорным. Либо это, либо я не понимаю, что вы просите... потратив некоторое время на объяснение того, что вы на самом деле пытаетесь достичь, проделает длинный путь, чтобы задать более эффективный вопрос:)

Ответ 2

Чтобы ответить на вопрос, посмотрите на этот пример:
Создайте файл 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 и запустите его как java A, тогда вывод будет

hi 
hello

или вы запустите его как java B, тогда вывод будет
hello

Обратите внимание, что ни один из классов не помечен public, поэтому дает им доступ к default. Файлы без каких-либо публичных классов не имеют ограничений имен файлов.

Ответ 3

Пока у вас нет открытого класса в исходном файле, вы можете назвать свой исходный файл любым именем и скомпилировать его. Но если у вас есть открытый класс в исходном файле, этот файл должен иметь имя, аналогичное имени вашего класса. В противном случае компилятор выдает ошибку.

Пример:
Имя файла: TestFileName.java

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

Компиляция: javac TestFileName.java

Ошибка:

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

Ответ 4

Нет, имя открытого класса должно совпадать с именем файла. Внутренние, не публичные, имена классов могут отличаться.

Ответ 5

У вас должен быть открытый класс с тем же именем, что и имя файла. Это очень хорошая вещь. У вас могут быть вторичные классы внутри одного и того же файла, если они не являются общедоступными. Они все равно могут быть "по умолчанию", поэтому они все еще могут использоваться другими классами в одном пакете.

Это не должно быть сделано по большей части. Шаблоны именования Java, относящиеся к классам и пакетам, являются одним из самых больших преимуществ, которые он имеет - упрощает жизнь программистов без каких-либо затрат.

Ответ 6

да, мы скомпилируем 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");
 }
}

затем скомпилируйте его с помощью (windows): javac sample.java

затем запустите его: java A

: hi в классе A

затем запустите его: java B

вывод: привет в классе B

Пожалуйста, проверьте и подтвердите.

Ответ 7

Вы можете использовать API компиляции Java и скомпилировать любой источник java, который вам нужен, источник не обязательно должен быть из файла или может поступать из файла с несвязанным именем. Это зависит от того, насколько тупой вы хотите разработать свою программу.;)

Ответ 8

Я предполагаю, что он означает, что .java файл назван иначе, чем фактический класс, определенный внутри него.

Я думаю, это невозможно.

Ответ 9

Нет. Вы можете написать оболочку script, чтобы переименовать файл .java перед ее компиляцией, но javac требует, чтобы имена файлов = имена классов.

(Также в окнах он нечувствителен к регистру, поэтому ASDF.java может скомпилировать Asdf.class)

Ответ 10

да, вы можете выбрать любое имя для файла (.java). не имеет значения, какое имя классов в этом файле означает, что имена классов могут быть полностью отличными от имени файла. вы должны скомпилировать программу с именем файла, и вы должны запустить программу с именем класса, в котором существует основной метод. основные методы могут быть множественными в разных классах, поэтому вы должны запустить его с именем класса, в котором основной метод вы хотите запустить......

Ответ 11

мы можем сохранить файл tootle для другого имени класса, потому что в java мы компилируем программу, но мы запускаем метод. мы должны скомпилировать нашу программу с именем файла и запустить наше имя класса

Ответ 12

Да, можно скомпилировать исходный файл java с другим именем файла, но вам нужно убедиться, что ни один из классов, определенных внутри, не является общедоступным... когда вы скомпилируете исходный файл соответствующие файлы .class для классов внутри создается исходный файл.

Ответ 13

Да, вы можете сохранить свой исходный код java с любым другим именем, не таким же, как имя вашего основного класса, но когда вы включите его, а имя файла байтового кода будет таким же, как имя вашего основного класса. Таким образом, для вашей непринужденности не запоминать многие имена для запуска java-кода, вам нужно, чтобы ваше имя файла было таким же, как ваш основной класс, а не только имя вашего файла, а файл байтового кода будет с тем же именем.

Ответ 14

Если класс не является общедоступным, вы можете сохранить его с помощью другого имени, например, если classname Simple, а затем сохраните его Hard.java. complie- > Hard.java run- > Simple.java Сохраните файл java только с помощью .java. компилировать javac.java запустите java yourclassname Например, если мое имя основного класса программы равно A, тогда сохранить только .java
компилировать javac.java
выполняется java A

Ответ 15

да, мы можем скомпилировать java файл с другим именем, чем класс, при условии, что в этом файле не должно быть открытого класса.

Если в файле есть класс public, тогда в этом случае вы должны указать это имя как имя файла. Но если ваш класс не содержит класс public, вы можете присвоить ему какое-либо имя.

Пожалуйста, обратитесь к приведенному ниже примеру, чтобы сделать его более понятным:

имя файла: example.java

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

затем запустите его: java A

output : you are in Class A

затем запустите его: java B

output : you are in class B

Пожалуйста, проверьте и подтвердите.

Ответ 16

В java можно написать несколько основных методов, поскольку java обеспечивает перегрузку основных методов, в которых основной метод также может быть перегружен. После компиляции файла здесь example.java Компилятор создает файл .class, который содержит основной метод при запуске файла с java A, он будет запускать файл A.class, содержащий основной метод класса A, и этот вывод будет отображаться на вашем экране, но когда вы запустите этот файл с помощью java B, Он запускает файл B.class, который предоставляет основной метод класса B Таким образом, ваш код успешно выполнен.

Ответ 17

В соответствии с другими ответами единственным жизнеспособным решением является как-то определить имя класса из источника, а затем использовать его для переименования файла в собственное имя и скомпилировать его как обычно.

Ответ 18

Да. Это можно сделать.

Основная причина того, что класс и имя файла должны быть одинаковыми, - это упростить задачу компилятора проверить, какой класс должен запускаться во всем списке классов Java.

Итак, хорошая практика иметь имя файла и имя класса как таковое.

И вы компилируете и запускаете класс с другим именем, отличным от имени файла, если у вас нет общедоступных методов в этом классе.