Java имеет предел на длину имени класса?

Команды из советов ниже, завернутые в пакетный скрипт Сохраните это как unpack.bat. Затем поместите его в каталог с извлеченными файлами jdk / jre.

@echo off

cd /d "%~dp0"
for /r %%x in (*.pack) do .\bin\unpack200 -r "%%x" "%%~dx%%~px%%~nx.jar"
36
задан Allan Bowe 27 November 2009 в 14:54
поделиться

4 ответа

В Спецификации языка Java указано, что длина идентификаторов не ограничена.

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

50
ответ дан 27 November 2019 в 05:31
поделиться

Нет. Java не накладывает никаких ограничений на имя класса. Но если вы взаимодействуете с другими системами (например, JNI), лучше перестраховаться.

0
ответ дан 27 November 2019 в 05:31
поделиться

По-моему, 65535 символов. Из спецификации виртуальной машины Java:

Длина имен полей и методов, дескрипторы полей и методов, и другие постоянные строковые значения ограничено 65535 символами 16-битный элемент беззнаковой длины Структура CONSTANT_Utf8_info (§4.4.7). Обратите внимание, что ограничение на количество байтов в кодировке, а не на количество закодированных символов. UTF-8 кодирует некоторые символы, используя два или три байта. Таким образом, строки включение многобайтовых символов дополнительно ограничено.

здесь:

https://docs.oracle.com/javase/specs/jvms/se6/html/ClassFile.doc.html#88659

33
ответ дан 27 November 2019 в 05:31
поделиться

With JDK 1.5, the practical limit for class names on Windows XP with 255 -- longer names gave errors in the file system. This was the full name (directory+package+class).

I have not tried JDK 1.6 on Vista or windows 7, hopefully Sun fixed it to be the NTFS limit of 8000 or so.

3
ответ дан 27 November 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: