Как редактировать файлы классов Minecraft

Обновлено: 04.07.2024

Visual Studio Code — это прежде всего редактор исходного кода с широкими возможностями редактирования. В этом документе мы рассмотрим несколько специфичных для Java функций, полезных при работе с Java.

Если у вас возникнут проблемы при использовании перечисленных ниже функций, вы можете связаться с нами, указав проблему.

Навигация по коду

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

Поиск символов

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

Поиск символов в рабочей области

Поиск символов в текущем файле

Чтобы найти символ в текущем файле, используйте Быстрое открытие ( ⌘P (Windows, Linux Ctrl+P ) ), затем введите команду '@', затем введите имя искомого символа. Появится список потенциальных совпадений, который будет отфильтрован по мере ввода. Выберите из списка совпадений, чтобы перейти к его расположению.

Просмотр определения

Вы можете быстро просмотреть, как был определен символ, используя функцию Peek Definition. Эта функция отображает несколько строк кода рядом с определением внутри окна просмотра, так что вы можете посмотреть, не покидая своего текущего местоположения.

Чтобы просмотреть определение символа, поместите курсор на символ в любом месте, где он используется в исходном коде, а затем нажмите ⌥F12 (Windows Alt+F12 , Linux Ctrl+Shift+F10 ) . Кроме того, вы можете выбрать «Просмотр определения» в контекстном меню (щелкните правой кнопкой мыши и выберите «Просмотр определения»).

Перейти к определению

Вы также можете быстро перейти к месту определения символа с помощью функции "Перейти к определению".

Чтобы перейти к определению символа, поместите курсор на символ в любом месте, где он используется в исходном коде, а затем нажмите F12 . Кроме того, вы можете выбрать «Перейти к определению» из контекстного меню (щелкните правой кнопкой мыши, затем выберите «Перейти к определению»). Если имеется только одно определение символа, вы перейдете непосредственно к его местоположению, в противном случае конкурирующие определения отображаются в окне просмотра, как описано в предыдущем разделе, и вам нужно выбрать определение, к которому вы хотите перейти.

Перейти к суперреализации

Вы можете отслеживать реализации классов и методы переопределения, щелкнув ссылку Перейти к суперреализации при наведении указателя мыши.

Spring Navigation< бр />

Иерархия вызовов

В представлении "Иерархия вызовов" отображаются все вызовы от функции или к ней, а также вы можете детализировать вызывающие абоненты и вызовы вызовов. Щелкните правой кнопкой мыши функцию и выберите Просмотр > Просмотр иерархии вызовов.

Просмотр иерархии вызовов

Вы также можете щелкнуть правой кнопкой мыши тело функции и выбрать "Показать иерархию вызовов".

Иерархия типов

Представление иерархии типов показывает отношения наследования между объектами Java. Вы можете щелкнуть правой кнопкой мыши тип и выбрать Показать иерархию типов.

Области сворачивания

Области сворачивания позволяют сворачивать или разворачивать фрагмент кода для лучшего просмотра исходного кода.

Умный выбор

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

  • Чтобы расширить выделение, используйте ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right ).
  • Чтобы уменьшить выделение, используйте ⌃⇧⌘ ← (Windows, Linux Shift+Alt+Left ) .

Семантическое выделение

Подсветка синтаксиса – важная функция, которая позволяет более эффективно читать код. С помощью семантического выделения VS Code может обеспечить более точное выделение цветом исходного кода на основе информации о символах из языковой службы Java.

Ниже приведен только один пример: слева показано поведение после включения семантической подсветки, а справа — только с подсветкой синтаксиса.

Semantic Highlighting< бр />

Подробнее о подсветке семантики Java можно узнать на вики-сайте расширения поддержки языка Java.

Навигация по коду с помощью Spring Boot

Расширение Spring Boot Tools обеспечивает улучшенную навигацию и поддержку завершения кода для проектов Spring Boot.

  • @/ показывает все определенные сопоставления запросов (сопоставленный путь, метод запроса, исходное местоположение)
  • @+ показывает все определенные bean-компоненты (имя bean-компонента, тип bean-компонента, исходное расположение)
  • @> показывает все функции (реализация прототипа)
  • @ показывает все аннотации Spring в коде

Spring Navigation< бр />

Чтобы узнать больше о поддержке Spring Boot в Visual Studio Code, прочитайте Spring Boot в Visual Studio Code.

Редактирование кода

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

Поддержка Java в Visual Studio Code автоматически обнаруживает проблемы в вашем коде и предоставляет вам рекомендации по быстрому исправлению.

Подробнее о рефакторинге и действиях с кодом см. в разделе Рефакторинг и действия с исходным кодом.

IntelliSense

Автозавершение кода в Visual Studio Code for Java обеспечивается языковой поддержкой для Java™ от Red Hat. Расширение основано на тех же инструментах разработки Java (JDT), что и Eclipse, поэтому вы можете рассчитывать на такой же уровень поддержки.

Кроме того, существует технология IntelliSense с искусственным интеллектом, которая называется IntelliCode. Это экономит ваше время, помещая то, что вы, скорее всего, будете использовать, в начало списка завершения. Рекомендации IntelliCode основаны на тысячах проектов с открытым исходным кодом на GitHub, каждый из которых имеет более 100 звезд, поэтому он обучен наиболее распространенным применениям из высококачественных проектов. В сочетании с контекстом вашего кода список завершения адаптирован для продвижения этих практик. Вот IntelliCode для Java в действии.

IntelliCode хорошо работает с популярными библиотеками и платформами Java, такими как Java SE и Spring. Это поможет вам независимо от того, создаете ли вы монолитные веб-приложения или современные микросервисы.

Создать новый файл

VS Code поддерживает применение шаблонов при создании исходного файла Java. Когда вы создаете файл .java в проводнике, языковой сервер автоматически генерирует тело класса и заполняет для вас информацию о пакете:

Фрагменты кода

Visual Studio Code поддерживает широкий спектр популярных фрагментов кода Java, чтобы повысить вашу продуктивность, например class/interface, syserr, sysout, if/else, try/catch, статический метод main. Используя информацию с языкового сервера Java, он также обеспечивает предварительный просмотр фрагмента кода во время выбора.

private Random grinderRand;
private final boolean isActive;
public yw entityplayer;
private static boolean keepGrinderInventory = false;
public static int Grinderside;
public static int Grinderfrontoff;
public static int Grinderfronton;
public static int Grindertop;
public static int Grinderbottom;

защищенный BlockGrinder(int i, логический флаг)
super(i, acn.e);
grinderRand = new Random();
активен = флаг;
Grinderside = ModLoader.addOverride("/terrain.jpg", "/Plant/grinderside.jpg");
Grinderfronton = ModLoader.addOverride("/terrain.jpg", "/Plant/grinderfronton.jpg");
Grinderfrontoff = ModLoader.addOverride("/terrain.jpg", "/Plant/grinderfrontoff.jpg");
Grindertop = ModLoader.addOverride("/terrain.jpg", "/Plant/grindertop.jpg");
Grinderbottom = ModLoader.addOverride("/terrain.jpg", "/Plant/grinderbottom.jpg");
>

public void a(xd world, int i, int j, int k)
super.a(world, i, j, k);
setDefaultDirection(world, i, j, k);
>

private void setDefaultDirection(xd world, int i, int j, int k)
if(world.F)
return;
>
int l = world.a(i, j, k - 1);
int i1 = world.a(i, j, k + 1);
int j1 = world.a(i - 1, j, k);
int k1 = world.a(i + 1, j, k);
байт byte0 = 3;
if(pb.n[l] && !pb.n[i1])
byte0 = 3;
>
if(pb.n[i1] && !pb.n[l])
byte0 = 2;
>
if(pb.n[j1] && !pb.n[k1])
byte0 = 5;
>
if(pb.n[k1] && !pb.n[j1])
byte0 = 4;
>
world.f(i, j, k, byte0);
>

public int d(ali iblockaccess, int i, int j, int k, int l)
if(l == 1)
return Grindertop;
>
if(l == 0)
return Grinderbottom;
>
int i1 = iblockaccess.e(i, j, k);
if(l != i1)
return Grinderside;
>
if(isActive)
return Grinderfrontoff;
> else
return Grinderfrontoff;
>
>

public int a_(int i)
if(i == 1)
return Grindertop;
>
if(i == 0)
return Grindertop;
>
if(i == 3)
return Grinderfrontoff;
> else
return Grinderside;
>
>

В этой статье мы обсудим редактор файлов классов Java — инструмент, созданный на языке Java и используемый для редактирования скомпилированных классов Java. Мы можем декомпилировать и просмотреть созданные классы Java, но для их изменения нам потребуются такие инструменты, как редактор файлов классов Java.

Возможности редактора файлов классов Java

  • Простой в использовании интерфейс, созданный с использованием Java Swing
  • Позволяет модифицировать различные части файла класса, такие как методы, строки, константы и т. д.
  • Проверки согласованности

Использование редактора файлов классов Java для редактирования скомпилированного класса Java

Извлеките сжатый файл и откройте файл JAR с именем ce.jar, как показано ниже.

Файл класса Редактор на Java — шаг 2

Если мы не можем открыть файл, мы можем открыть командную строку/терминал и использовать следующую команду:

После открытия редактора мы открываем файл класса Java с помощью пункта меню «Файл» > «Открыть» и выбираем файл класса проводника.
Мы будем использовать следующий код в файле класса.
После того, как редактор откроет файл, мы включаем режим изменения в правом верхнем углу; этот режим по умолчанию отключен, как показано на изображении ниже. Кнопка станет синей, если она включена, и зеленой, если выключена.
После модификации мы можем изменить некоторые аспекты класса, перейдя в разные разделы редактора.

В разделе «Общие» редактора отображается имя класса и его родительский класс. Мы можем видеть и редактировать интерфейсы, если они есть в классе. Также существуют модификаторы доступа к классу, которые мы можем изменить, если захотим. Следующий раздел — это раздел Constant Pool, в котором отображаются все константы редактора в классе. Здесь мы можем изменить тип константы и ее значение. Мы можем добавить новые константы или удалить существующую. В разделе «Поля» редактора показаны поля с их модификаторами доступа, которые мы можем изменить. Последний раздел части редактора — это раздел «Методы», где перечислены все методы класса с их именами, модификаторами доступа и типами возвращаемых значений, которые можно редактировать, и мы можем их изменить.

После всех изменений сохраняем файл класса с помощью пункта меню File > Save. Мы также можем экспортировать все элементы, такие как имена полей, константы, методы и их значения в виде XML-файла, используя пункт меню «Файл»> «Экспорт в XML».

Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».


сообщить об этом объявлении

Путь к классу — это путь, по которому среда выполнения Java ищет классы и другие файлы ресурсов. Путь поиска класса (более известный под более коротким именем «путь к классу») можно задать либо с помощью параметра -classpath при вызове инструмента JDK (предпочтительный метод), либо путем установки переменной среды CLASSPATH. Параметр -classpath предпочтительнее, поскольку его можно установить отдельно для каждого приложения, не затрагивая другие приложения и не изменяя его значение другими приложениями.

% sdkTool -classpath classpath1 : classpath2.

% setenv ПУТЬ К КЛАССУ classpath1 : classpath2.

  • Для файла .jar или .zip, содержащего файлы .class, путь к классу заканчивается именем файла .zip или .jar.
  • Для файлов .class в безымянном пакете путь к классу заканчивается каталогом, содержащим файлы .class.
  • Для файлов .class в именованном пакете путь к классу заканчивается каталогом, содержащим "корневой" пакет (первый пакет в полном имени пакета).

Несколько записей пути разделяются двоеточиями.

Путь класса по умолчанию — это текущий каталог. Установка переменной CLASSPATH или использование параметра командной строки -classpath переопределяет это значение по умолчанию, поэтому, если вы хотите включить текущий каталог в путь поиска, вы должны включить "." в новых настройках.

Записи пути к классам, которые не являются ни каталогами, ни архивами (файлы .zip или .jar), ни * игнорируются.

Описание

Путь к классу сообщает инструментам и приложениям JDK, где найти сторонние и определяемые пользователем классы, то есть классы, которые не являются расширениями или частью платформы Java. Путь к классу должен найти все классы, которые вы скомпилировали с помощью компилятора javac — по умолчанию используется текущий каталог, чтобы было удобно найти эти классы.

JDK, JVM и другие инструменты JDK находят классы путем поиска классов платформы Java (начальной загрузки), любых классов расширения и пути к классу в указанном порядке. (Подробнее о стратегии поиска см. в разделе Как находят классы.) Библиотеки классов для большинства приложений захотят использовать механизм расширений. Вам нужно только установить путь к классу, когда вы хотите загрузить класс, который (а) не находится в текущем каталоге или ни в одном из его подкаталогов и (б) не находится в месте, указанном механизмом расширений.

Если вы обновляете более старую версию JDK, ваши параметры запуска могут включать параметры CLASSPATH, которые больше не нужны. Вы должны удалить все настройки, которые не относятся к приложению, например, class.zip . Некоторые сторонние приложения, использующие виртуальную машину Java, могут изменить вашу переменную среды CLASSPATH, чтобы включить библиотеки, которые они используют. Такие настройки могут остаться.

Путь к классу можно изменить с помощью параметра -classpath инструментов JDK при вызове JVM или других инструментов JDK или с помощью переменной среды CLASSPATH. Использование параметра -classpath предпочтительнее, чем установка переменной среды CLASSPATH, поскольку вы можете установить ее индивидуально для каждого приложения, не затрагивая другие приложения и не изменяя ее значение другими приложениями.

Классы могут храниться либо в каталогах (папках), либо в архивных файлах. Классы платформы Java хранятся в rt.jar. Дополнительные сведения об архивах и сведения о том, как работает путь к классу, см. в разделе Общие сведения о пути к классу и именах пакетов в конце этого документа.

Важное примечание. Некоторые старые версии программного обеспечения JDK включали запись jdk-dir >/classes в путь к классам по умолчанию. Этот каталог существует для использования программным обеспечением JDK и не должен использоваться для классов приложений. Классы приложений следует размещать в каталоге вне иерархии каталогов JDK. Таким образом, установка нового JDK не требует переустановки классов приложений. Для совместимости со старыми версиями приложения, использующие каталог jdk-dir >/classes в качестве библиотеки классов, будут работать в текущей версии, но нет гарантии, что они будут работать в будущих версиях.

Использование параметра -classpath инструментов JDK

Инструменты Java java, jdb, javac и javah имеют параметр -classpath, который заменяет путь или пути, указанные переменной среды CLASSPATH во время работы инструмента. Это рекомендуемый вариант для изменения параметров пути к классу, поскольку каждое приложение может иметь необходимый ему путь к классу, не мешая другим приложениям.

Среда выполнения java также имеет параметр -cp. Эта опция является аббревиатурой от -classpath .

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

Использование переменной среды CLASSPATH

Как правило, рекомендуется использовать параметр командной строки -classpath, как описано в предыдущем разделе. В этом разделе показано, как установить переменную среды CLASSPATH, если вы хотите это сделать, или очистить настройки, оставшиеся от предыдущей установки.

Установка ПУТИ К КЛАССУ

В csh переменная среды CLASSPATH изменяется с помощью команды setenv. Формат:

setenv ПУТЬ К КЛАССУ путь1 : путь2

В sh переменную среды CLASSPATH можно изменить с помощью следующих команд:

ПУТЬ К КЛАССУ = путь1 : путь2 : .

экспортировать ПУТЬ К КЛАССУ

Очистка ПУТИ К КЛАССУ

Если для переменной среды CLASSPATH задано неверное значение или если ваш файл запуска или скрипт задает неверный путь, вы можете отменить установку CLASSPATH в csh, используя:

удалить ПУТЬ К КЛАССУ

В sh вы должны использовать:

удалить ПУТЬ К КЛАССУ

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

Изменение параметров запуска

Если переменная CLASSPATH установлена ​​при запуске системы, место ее поиска зависит от используемой оболочки:

< td headers="c1">sh, ksh
Оболочка Сценарий запуска
csh, tcsh Проверьте файл .cshrc на наличие команды setenv.
Проверьте файл .profile на наличие команды экспорта.

Подстановочные знаки пути к классу

Записи пути к классу могут содержать подстановочный знак базового имени *, который считается эквивалентным указанию списка всех файлов в каталоге с расширением .jar или .JAR . Например, запись пути к классу foo/* указывает все файлы JAR в каталоге с именем foo. Запись пути к классам, состоящая из *, расширяется до списка всех jar-файлов в текущем каталоге. Файлы будут рассматриваться независимо от того, скрыты они или нет (то есть имеют имена, начинающиеся с '.').

Запись пути к классу, содержащая *, не будет соответствовать файлам классов. Чтобы сопоставить классы и JAR-файлы в одном каталоге foo , используйте foo:foo/* или foo/*:foo . Выбранный порядок определяет, загружаются ли классы и ресурсы в foo перед файлами JAR в foo или наоборот.

Рекурсивный поиск в подкаталогах не выполняется. Например, foo/* ищет файлы JAR только в foo , а не в foo/bar , foo/baz и т. д.

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

Расширение подстановочных знаков выполняется заранее, до вызова основного метода программы, а не поздно, во время самого процесса загрузки класса. Каждый элемент входного пути к классу, содержащий подстановочный знак, заменяется (возможно, пустой) последовательностью элементов, сгенерированных путем перечисления файлов JAR в указанном каталоге. Например, если каталог foo содержит a.jar, b.jar и c.jar, то путь класса foo/* расширяется до foo/a.jar:foo/b.jar:foo/c.jar и эта строка будет значением системного свойства java.class.path .

Переменная среды CLASSPATH ничем не отличается от параметра командной строки -classpath (или -cp ). То есть во всех этих случаях учитываются подстановочные знаки. Однако подстановочные знаки пути к классу не учитываются в заголовке файла jar-manifest Class-Path.

Понимание пути к классу и имен пакетов

Класс Java организован в пакеты, которые сопоставляются с каталогами в файловой системе. Но, в отличие от файловой системы, всякий раз, когда вы указываете имя пакета, вы указываете полное имя пакета, а не его часть. Например, имя пакета для java.awt.Button всегда указывается как java.awt .

Например, предположим, что вы хотите, чтобы среда выполнения Java нашла класс с именем Cool.class в пакетеutility.myapp. Если путь к этому каталогу — /java/MyClasses/utility/myapp , вы должны установить путь к классу так, чтобы он содержал /java/MyClasses .

Чтобы запустить это приложение, вы можете использовать следующую команду JVM:

% java -classpath /java/MyClassesutility.myapp.Cool

При запуске приложения JVM использует параметры пути к классу, чтобы найти любые другие классы, определенные в пакете утилиты.myapp, которые используются классом Cool.

Обратите внимание, что в команде указывается полное имя пакета. Например, невозможно указать путь к классу так, чтобы он содержал /java/MyClasses/utility, и использовать команду java myapp.Cool . Класс не будет найден.

(Возможно, вам интересно, что определяет имя пакета для класса. Ответ заключается в том, что имя пакета является частью класса и не может быть изменено, кроме как путем перекомпиляции класса.)

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

Папки и архивные файлы

Если классы хранятся в каталоге (папке), например /java/MyClasses/utility/myapp , то запись пути к классу указывает на каталог, содержащий первый элемент имени пакета. (в данном случае /java/MyClasses , поскольку имя пакета —utility.myapp .)

Но когда классы хранятся в архивном файле (файле .zip или .jar), запись пути к классу представляет собой путь к файлу .zip или .jar, включая его. Например, чтобы использовать библиотеку классов, которая находится в файле .jar, команда будет выглядеть примерно так:

% java -classpath /java/MyClasses/myclasses.jarutility.myapp.Cool

Несколько спецификаций

Чтобы найти файлы классов в каталоге /java/MyClasses, а также классы в каталоге /java/OtherClasses, укажите путь к классу:

% java -classpath /java/MyClasses:/java/OtherClasses .

Обратите внимание, что два пути разделены двоеточием.

Порядок спецификации

Важен порядок, в котором вы указываете несколько записей пути к классу. Интерпретатор Java будет искать классы в каталогах в том порядке, в котором они указаны в переменной пути к классу. В приведенном выше примере интерпретатор Java сначала будет искать нужный класс в каталоге /java/MyClasses. Только если он не найдет класс с правильным именем в этом каталоге, интерпретатор будет искать в каталоге /java/OtherClasses.

Читайте также: