Путь к классам - это список мест для загрузки классов.
Эти «местоположения» могут быть либо каталогами, либо файлами 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, у вас будет опция меню, указывающая ваш путь к классу.
Хорошо, я исправил это, изменив место сохранения на System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal)
Не спрашивайте меня, почему это сработало, когда им нужны одни и те же разрешения, но это сделал.
Это похоже на ошибку копирования и вставки - вы должны научиться реорганизовывать общий код и выражения в одно значение и повторно использовать его.
//Checks Directory exists
if (File.Exists(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt") == false)
{
Directory.CreateDirectory(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/");
File.Create(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt");
}
Предположим, что Android.OS.Environment.DirectoryDownloads
имеет значение /Downloads
. Теперь переходим через код строки за строкой (вы должны сделать это с помощью отладчика):
File.Exists(Android.OS.Environment.DirectoryDownloads + "/Jitters/FavouritesListAdded.txt")
Значение параметра здесь будет "/Downloads/Jitters/FavouritesListAdded.txt"
- OK
Directory.CreateDirectory(Android.OS.Environment.DirectoryDownloads + "Jitters/FavouriteList/");
Здесь нет ведущей косой черты в литеральной строке, поэтому значение будет: /DownloadsJitters/FavouriteList
- я предполагаю, что вы, вероятно, означали, что это /Downloads/Jitters/FavouriteList
.
Вместо того, чтобы убедиться, что косые черты добавлены ко всем 6 в вашем коде - просто создайте одну переменную со значением пути и повторно используйте ее .