Путь к классам - это список мест для загрузки классов.
Эти «местоположения» могут быть либо каталогами, либо файлами jar.
Для каталогов JVM будет следовать ожидаемому шаблону для загрузки класса. Если у меня есть каталог C: / myproject / classes в моем пути к классам, и я пытаюсь загрузить класс com.mycompany.Foo, он будет выглядеть под каталогом классов для каталога с именем com, а затем под этим каталогом mycompany и наконец, он будет искать файл с именем Foo.class в этом каталоге.
Во втором случае для файлов jar он будет искать файл jar для этого класса. Файл jar на самом деле представляет собой просто набор каталогов, подобных приведенным выше. Если вы распакуете файл jar, вы получите кучу каталогов и файлов классов по шаблону выше.
Таким образом, JVM просматривает путь класса от начала до конца, ища определение класса при попытке загрузить определение класса. Например, в пути к классам:
C: / myproject / classes; C: /myproject/lib/stuff.jar; C: /myproject/lib/otherstuff.jar
JVM попытается сначала посмотреть в классах каталогов, а затем в stuff.jar и, наконец, в otherstuff.jar.
Когда вы получаете исключение ClassNotFoundException, это означает, что JVM прошел весь путь к классам и не нашел класс вы пытались ссылаться. Решение, как часто в мире Java, состоит в проверке вашего пути к классам.
Вы определяете путь к классам в командной строке, говоря java -cp, а затем ваш путь к классам. В среде IDE, такой как Eclipse, у вас будет опция меню, указывающая ваш путь к классу.
В течение года вы должны использовать нижний регистр y:
final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy");
Верхний регистр Y используется для недельного периода. Подробнее см. javadoc of DateTimeFormatter .
Ответ на вопрос заключается в использовании 'y' not 'Y'.
Чтобы объяснить сообщение об ошибке, разрешите его разложить:
Unable to obtain LocalDate from TemporalAccessor
Это говорит о том, что он не может создать LocalDate
(что было запрошено) из TemporalAccessor
(низкоуровневый интерфейс, который предоставляет доступ к hashmap для полей даты / времени).
of type java.time.format.Parsed
Это говорит о том, что объект, переданный в метод, имел тип java.time.format.Parsed
. Это стандартный тип вывода синтаксического анализа и содержит всю анализируемую информацию.
{DayOfMonth=1, MonthOfYear=7, WeekBasedYear[WeekFields[MONDAY,4]]=2015},ISO
Это форма toString()
объекта java.time.format.Parsed
, которая привела к от разбора. Говорят, что были проанализированы четыре вещи:
DayOfMonth=1
, день месяца проанализирован со значением 1
MonthOfYear=7
, месяц- (f12) WeekBasedYear[WeekFields[MONDAY,4]]=2015
, в течение недели, обработанного значением 2015
ISO
, который представляет собой календарь ISO system (значение по умолчанию) Поскольку невозможно создать LocalDate
из комбинации DayOfMonth + MonthOfYear + WeekBasedYear, генерируется исключение.
Примечание что часть [WeekFields[MONDAY,4]]
ссылается на то, что существует много разных способов определить неделю, в США начинаются недели в воскресенье, но в стандарте ISO и в ЕС они начинаются в понедельник.
Y
для weekyear i>, аy
для year i>? – mthmulders 24 July 2015 в 08:35YYYY
как. Я посмотрел java datetimeformatter weekbasedyear , и первый результат привел меня здесь , в котором перечислены типы идентификаторов и что они означают. – Chris Cirefice 24 July 2015 в 15:06