根据上一个问题的说明:Android Studio run configuration for ORMLite config generation
我能够让我的配置运行这个类,但它仍然失败
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 );
}
}
我的平台是Windows,我无法弄清楚为什么它一直无法“无法找到原始目录”。
这是我的android studio运行的命令:
"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
我使用的是ORMLite版本4.45
答案 0 :(得分:25)
您可以毫无问题地使用Android Studio,但请确保在编辑配置中选择标准JDK和(重要!)来修改&#34;工作目录&#34;通过选择&#34; main&#34;你的android项目的文件夹
它应该是这样的: / your_workspace / your_project /应用程序/ SRC /主
答案 1 :(得分:14)
如果您尝试在Android Studio中创建它,则尝试在最顶层的目录中找到该文件夹(其中.idea用于例如) 因此,如果您在该raw中创建目录res,则util将能够创建该文件。
答案 2 :(得分:7)
再次运行DBConfigUtil文件。
注意:确保您有res / raw / ormlite_config.txt文件
答案 3 :(得分:1)
您收到此错误,如果您尚未在res文件夹中创建原始文件夹。只需在res文件夹中手动创建原始文件夹并尝试。这发生在MAC中的eclispse IDE中。
答案 4 :(得分:1)
我不确定这是否会对Windows有所帮助,但我无法让它在Mac上的Android Studio中运行,直到我将Make
放回到运行配置的Before Launch
部分。可能值得一试,以避免在Android Studio和NetBeans之间交换烦恼!
答案 5 :(得分:1)
我得到了同样的错误。我忘了添加“new File()”构造。在我添加之后它仍然给出了相同的消息。但是当我重建这个项目时,它突然正在发挥作用。
总结我的所作所为(MAC OSX用户): - 确保你已经将两个ormlite-android和ormlite-core jar文件添加到libs目录中 - 右键单击将它们添加为项目库 - 从ormlite指令中复制OrmLiteConfigUtil指令 - 确保使用完整路径并使用File类 - 在res树中添加原始目录 - 添加一个空的ormlite_config.txt - 创建构建配置
显然,你需要在每次更改后进行重建,让它们生效。
答案 6 :(得分:1)
另一个crapy选项是,如果您的数据库非常简单,可以手动创建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--
#################################
正如我所说,这只是一个糟糕的解决方法,但它可能对某人有所帮助。 :/
答案 7 :(得分:1)
更好的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);
答案 8 :(得分:1)
由于我必须从上述所有答案中收集并撰写正确的答案,我在这里为您提供完整的解决方案:
将您的配置文件(例如“OrmliteDatabaseConfigUtil”)放在Android项目根目录包下 - - &gt; app-&gt; src-&gt; java-&gt; com.your_package
确保您拥有所需的所有文件。
添加'raw'目录和'ormlite_config.txt“
如果您使用的是ormLite guide to 'Using Table Config File'
String configPath =“\ res \ raw \ ormlite_config.txt”;
,转到配置文件,右键单击“run ... main()” 之后,如果第一次运行不起作用,请转到工作室工具栏中的运行部分,单击小箭头并单击“编辑配置”。确保以下内容:
一个。主类 - 使用完整的包名称,它应该自动建议您的类名。
湾工作目录 - C:\ Users \ ... \ app \ src \ main
c。使用Module:app
的classpthd.JRE:deafault
即你可以放弃'制造;单独 - 它应该在那里
F。就是这样,它现在应该可以工作了。
答案 9 :(得分:0)
我找到了一个不错的解决方案。使用单独的IDE(不是Android Studio)来创建配置文件。就我而言,我使用的是NetBeans IDE 7.3.1,它运行得很好。
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)