Ответ 1
Если вы попытаетесь создать его в Android Studio, он попытается найти папку в самом верхнем каталоге (где.idea есть, например). Поэтому, если вы создадите реестр каталога и внутри этого raw, утилита сможет создать файл.
Следующие примечания из предыдущего вопроса: конфигурация запуска Android Studio для создания конфигурации ORMLite
Мне удалось настроить мою конфигурацию для запуска этого одного класса, но он все еще не работает с
Could not find raw directory
Это мой источник
package com.ilopez.android.machinesounds;
import com.j256.ormlite.android.apptools.OrmLiteConfigUtil;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
/**
* Created by User on 7/25/13.
*/
public class DatabaseConfigUtil extends OrmLiteConfigUtil {
private static final Class<?>[] classes = new Class[]{
RecordedSound.class,
};
public static void main(String[] args) throws IOException, SQLException {
writeConfigFile(new File("G:\\MachineSoundsProject\\MachineSounds\\src\\main\\res\\raw\\ormlite_config.txt"), classes );
}
}
Моя платформа - это окна, и я не могу понять, почему она продолжает терпеть неудачу с "невозможно найти исходный каталог".
Это команда, которую запускает моя студия Android:
"C:\Program Files\Java\jdk1.6.0_37\bin\java" -Didea.launcher.port=7544 "-Didea.launcher.bin.path=C:\Program Files (x86)\Android\android-studio\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Android\android-studio\sdk\platforms\android-17\android.jar;C:\Program Files (x86)\Android\android-studio\sdk\platforms\android-17\data\res;C:\Program Files (x86)\Android\android-studio\sdk\tools\support\annotations.jar;C:\local\Dropbox\git\MachineSoundsProject\MachineSounds\build\classes\debug;C:\Program Files (x86)\Android\android-studio\sdk\extras\android\m2repository\com\android\support\support-v4\13.0.0\support-v4-13.0.0.jar;C:\local\Dropbox\git\MachineSoundsProject\MachineSounds\libs\ormlite-android-4.45.jar;C:\local\Dropbox\git\MachineSoundsProject\MachineSounds\libs\ormlite-core-4.45.jar;C:\local\Dropbox\git\MachineSoundsProject\MachineSounds\libs\ormlite-jdbc-4.45.jar;C:\Program Files (x86)\Android\android-studio\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.ilopez.android.machinesounds.DatabaseConfigUtil
Я использую версию 4.45 ORMLite
Если вы попытаетесь создать его в Android Studio, он попытается найти папку в самом верхнем каталоге (где.idea есть, например). Поэтому, если вы создадите реестр каталога и внутри этого raw, утилита сможет создать файл.
Вы можете использовать Android Studio без проблем, но убедитесь, что в настройках редактирования выберите стандартный JDK и (важно!), Чтобы изменить "Рабочий каталог", выбрав "главную" папку вашего проекта Android
Это должно быть что-то вроде: /your_workspace/your_project/app/src/main
и снова запустите файл DBConfigUtil.
Примечание. Убедитесь, что у вас есть файл res/raw/ormlite_config.txt.
Вы получите эту ошибку, если вы еще не создали папку raw внутри папки res. Просто создайте папку raw вручную внутри папки res и попробуйте. Это происходит в среде eclispse IDE в MAC.
Я не уверен, если это поможет для Windows, но я не мог заставить его работать в Android Studio на Mac, пока я не положил Make
обратно в Before Launch
секции конфигурации Run. Возможно, стоит пойти, чтобы избежать раздражения обмена между Android Studio и NetBeans!
У меня такая же ошибка. Я забыл добавить конструкцию "новый файл()". После того, как я добавил, что он все же дал то же сообщение. Но затем, когда я перестроил проект, он внезапно работал.
Чтобы подвести итог тому, что я сделал (пользователь MAC OSX): - убедитесь, что вы добавили оба файла jar или oriteite-android и ormlite-core в каталог libs - щелкните правой кнопкой мыши, чтобы добавить их в качестве библиотеки проектов. Скопируйте инструкции OrmLiteConfigUtil из ormlite инструкций - убедитесь, что вы используете полный путь и используете класс File - добавьте исходный каталог в дерево res - добавьте пустой файл ormlite_config.txt - создайте конфигурацию сборки
По-видимому, вам нужно сделать Rebuild после каждого изменения, чтобы они имели эффект.
Другой вариант терапии - если ваша база данных очень проста, создайте файл txt вручную. Здесь я оставляю файл, созданный программой, в прошлом моем проекте, который я использовал в качестве шаблона для создания вручную другого в моем текущем проекте:
#
# generated on 2013/08/15 05:07:12
#
# --table-start--
dataClass=com.alvarosantisteban.pathos.Event
tableName=events
# --table-fields-start--
# --field-start--
fieldName=id
generatedId=true
useGetSet=true
# --field-end--
# --field-start--
fieldName=sequence
useGetSet=true
# --field-end--
# --field-start--
fieldName=name
canBeNull=false
useGetSet=true
# --field-end--
# --field-start--
fieldName=day
canBeNull=false
useGetSet=true
# --field-end--
# --field-start--
fieldName=hour
useGetSet=true
# --field-end--
# --field-start--
fieldName=description
useGetSet=true
# --field-end--
# --field-start--
fieldName=location
useGetSet=true
# --field-end--
# --field-start--
fieldName=links
columnName=links
dataPersister=SERIALIZABLE
useGetSet=true
# --field-end--
# --field-start--
fieldName=isInteresting
useGetSet=true
# --field-end--
# --field-start--
fieldName=isDescriptionInGerman
useGetSet=true
# --field-end--
# --field-start--
fieldName=eventsOrigin
useGetSet=true
# --field-end--
# --field-start--
fieldName=originsWebsite
useGetSet=true
# --field-end--
# --field-start--
fieldName=themaTag
useGetSet=true
# --field-end--
# --field-start--
fieldName=typeTag
useGetSet=true
# --field-end--
# --table-fields-end--
# --table-end--
#################################
Как я уже сказал, это всего лишь дрянное обходное решение, но это может помочь кому-то. :/
Лучший вариант для Android: дать и абсолютный путь для записи файла.
// Following code goes in your database configuration main method.
String ORMLITE_CONFIGURATION_FILE_NAME = "ormlite_config.txt";
/**
* Full configuration path includes the project root path, and the location
* of the ormlite_config.txt file appended to it.
*/
File configFile = new File(new File("").getAbsolutePath()
.split("app" +File.separator + "build")[0] + File.separator +
"app" + File.separator +
"src" + File.separator +
"main" + File.separator +
"res" + File.separator +
"raw" + File.separator +
ORMLITE_CONFIGURATION_FILE_NAME);
/**
* Pass configFile as argument in configuration file writer method.
*/
writeConfigFile(configFile);
Поскольку я должен был собрать и составить правильный ответ из всех вышеперечисленных ответов, я даю вам полное решение:
Поместите свой файл конфигурации (например, "OrmliteDatabaseConfigUtil") в свой корневой пакет проекта Android - → app-> src → java-> com.your_package
убедитесь, что у вас есть весь импорт вашего файла.
добавить 'raw' каталог и 'ormlite_config.txt'
если вы используете руководство ormLite для "Использование файла конфигурации таблицы",
String configPath = "\ res\raw\ormlite_config.txt";
после настройки вверх, перейдите в свой конфигурационный файл, щелкните правой кнопкой мыши "запустить... main()" после этого, если первый запуск не будет работать, перейдите в раздел выполнения на панели инструментов студии, щелкните маленькую стрелку и щелкните мышью по кнопке ' Изменить конфигурации ". убедитесь, что:
а. основной класс - с полным именем пакета, он должен автоматически указывать имя вашего класса.
б. Рабочий каталог - C:\Users\...\app\src\main
c.Используйте classpth Module: app
d.JRE: deafault
е. вы можете отказаться от "make"; один - он должен быть там
е. вот он, теперь он должен работать.
Я нашел достойное решение. Для создания файла конфигурации используйте отдельную среду IDE (не Android Studio). В моем случае я использовал IDE 7.3.1 NetBeans, и он работал нормально.
run:
Writing configurations to G:\MachineSoundsProject\MachineSounds\src\main\res\raw\ormlite_config.txt
Wrote config for class machinesoundandroidorm.RecordedSound
Done.
BUILD SUCCESSFUL (total time: 0 seconds)