Javac не может найти импорт

У меня проблемы с компиляцией файла с помощью javac.

Моя команда для компиляции:

C:\Work>javac -classpath "%CLASSPATH%;C:\Users\Me\Downloads\asm-4.1-bin\asm-4.1\src" wDump.java

Результаты в:

wDump.java:3: error: package org.objectweb.asm.attrs does not exist
import org.objectweb.asm.attrs.*;
^
1 error

Этот пакет наверняка существует. Он находится в том же дереве каталогов, что и все остальные импорты ASM. attrs - это пустой пакет, содержащий один HTML-документ.

Файл wDump.java также содержит

import org.objectweb.asm.*;

Который найден компилятором без проблем.

Если я закомментирую проблему импорта (org.objectweb.asm.attrs.*), Файл будет успешно скомпилирован. Следует также отметить, что компилятор Eclipse успешно компилирует этот файл.

3 ответа

Вам может понадобиться sourcepath не classpath

Используйте следующее:

javac \
-sourcepath src \
-your_jar_path/your.jar:. \
your_class_path/your.java \
-d classes

Если ваш код компилируется при комментировании import линия, тогда вам это не нужно и вы можете удалить его.

Если вы хотите использовать его, проверьте, что attrs правильное название пакета, так как кажется, что import org.objectweb.asm.*; работает. И проверь это attrs фактически является пакетом, и эта папка физически существует внутри asm папка. Вы также можете проверить, что файлы классов присутствуют внутри attrs папка.

attrs папка в asm Исходный почтовый индекс содержит только HTML-страницу без какого-либо класса внутри. Попробуйте удалить эту папку (вы можете сохранить ее ранее в другом каталоге, если вы не уверены) и сгенерировать снова imports сквозь ASMifier инструмент. Если папка не существует, возможно, инструмент не сгенерирует импорт автоматически.

Для вашей информации, вы не должны использовать внешний исходный код для компиляции вашего кода, кроме случаев, когда вы изменяете эти внешние источники. Вместо этого используйте файлы jar, добавленные в ваш путь к классам, для компиляции вашего кода. В файле jar asm-all-4.1 нет папки attrs.

Другие вопросы по тегам