как построить систему в возвышенном тексте 3 для java, которая также поддерживает пакеты? - PullRequest
0 голосов
/ 07 мая 2020

Я сохранил все свои java проекты следующим образом:

C: \ Users \ swagat \ Documents \ JavaProjects \ name_of_1st_project \ all_source_files. java C: \ Users \ swagat \ Documents \ JavaProjects \ name_of_2nd_project \ all_source_files. java C: \ Users \ swagat \ Documents \ JavaProjects \ name_of_3rd_project \ all_source_files. java C: \ Users \ swagat \ Documents \ JavaProjects_projects_of_name_of . java

Надеюсь, вы поняли иерархию.

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

Моя система сборки содержит:

{
    "shell_cmd": "javac $file && java $file_base_name"
}

Я также установил переменную среды CLASSPATH так, чтобы она указывала на C: \ Users \ swagat \ Documents \ JavaProjects

Я не хочу устанавливать разные CLASSPATH для каждого проекта

Вышеуказанная настройка работает, если я не использую пакет в моем java исходном коде

Но когда я использую пакет, например: package name_of_1st_project; в мой java исходный код, затем я получаю сообщение об ошибке сборки: « Не удалось найти или загрузить основной класс name_of_1st_project. Вызвано: java .lang.NoClassDefFoundError: name_of_1st_project / name_of_1st_project (неправильное имя: name_of_1st_project)"

Чтобы решить проблему, я изменил файл сборки как:

{
    "shell_cmd": "javac $file && java $file_base_name.name_of_1st_project"
}

И это решает проблему, но только для 1-го проекта.

Я хочу сделать его динамическим c, используя регулярное выражение или что-то еще, что может добавить « .name_of_nth_project » в конце возвышенный системный файл сборки. Я прочитал возвышенные документы и не нашел никакой переменной с текущим именем папки (только имя, исключая путь), которое я могу использовать.

Я искал весь inte rnet, но нашел нет точного решения. Пожалуйста, помогите. (возможно, мои комментарии могут помочь)

1 Ответ

0 голосов
/ 07 мая 2020

Измените возвышенный файл сборки на:

{
    "shell_cmd": "javac $file && java $file_base_name.$file_base_name"
}

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

...