Можем ли мы в Java 11+ как-то выполнить без компиляции несколько файлов?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Можем ли мы в Java 11+ как-то выполнить без компиляции несколько файлов?

Сообщение Anonymous »

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

Код: Выделить всё

import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;

public class J11SingleSource {
public static void main(String[] args) {
// Creating a list of hobbies
List hobbies = new ArrayList();
hobbies.add("Reading");
hobbies.add("Swimming");
hobbies.add("Gardening");

// Creating a Person object
Person person = new Person("John", 30, hobbies);

// Serialize the Person object to JSON
Gson gson = new Gson();
String json = gson.toJson(person);
System.out.println("Serialized JSON: " + json);

// Deserialize JSON to a Person object
Person deserializedPerson = gson.fromJson(json, Person.class);
System.out.println("Deserialized Person: " + deserializedPerson.getName());
System.out.println("Deserialized Person's Age: " + deserializedPerson.getAge());
System.out.println("Deserialized Person's Hobbies: " + deserializedPerson.getHobbies());
}

static class Person {
private String name;
private int age;
private List hobbies;

// Constructor, getters, and setters
public Person(String name, int age, List hobbies) {
this.name = name;
this.age = age;
this.hobbies = hobbies;
}

// Getters and setters
...
}

}
И я запустил это так: java -cp lib/gson-2.8.8.jar J11SingleSource.java
И это дает мне ожидаемый результат:

Код: Выделить всё

Serialized JSON: {"name":"John","age":30,"hobbies":["Reading","Swimming","Gardening"]}
Deserialized Person: John
Deserialized Person's Age: 30
Deserialized Person's Hobbies: [Reading, Swimming, Gardening]
Но мне хотелось большего. Поэтому я разделил их на файлы:
Сначала я извлек класс Person:

Код: Выделить всё

package tem.meaw.mua;

import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;

public class Person {
private String name;
private int age;
private List hobbies;

// Constructor, getters, and setters
public Person(String name, int age, List hobbies) {
this.name = name;
this.age = age;
this.hobbies = hobbies;
}

// Getters and setters
...
}
И файл, содержащий основной класс:

Код: Выделить всё

package tem.meaw.mua;

import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;

import tem.meaw.mua.Person;

public class Tem {
public static void main(String[] args) {
// Creating a list of hobbies
List hobbies = new ArrayList();
hobbies.add("Reading");
hobbies.add("Swimming");
hobbies.add("Gardening");

// Creating a Person object
Person person = new Person("John", 30, hobbies);

// Serialize the Person object to JSON
Gson gson = new Gson();
String json = gson.toJson(person);
System.out.println("Serialized JSON: " + json);

// Deserialize JSON to a Person object
Person deserializedPerson = gson.fromJson(json, Person.class);
System.out.println("Deserialized Person: " + deserializedPerson.getName());
System.out.println("Deserialized Person's Age: " + deserializedPerson.getAge());
System.out.println("Deserialized Person's Hobbies: " + deserializedPerson.getHobbies());
}
}
И я пытаюсь запустить его так: java -cp lib/gson-2.8.8.jar Tem.java Person.java Но он говорит мне следующее:

Код: Выделить всё

Tem.java:7: error: cannot find symbol
import tem.meaw.mua.Person;
^
symbol:   class Person
location: package tem.meaw.mua
Tem.java:18: error: cannot find symbol
Person person = new Person("John", 30, hobbies);
...
Так можно ли в Java 11+ как-то объединить зависимые файлы в один файл без компиляции?

Подробнее здесь: https://stackoverflow.com/questions/784 ... iple-files
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»