Android Studio ORMLite配置文件 - 无法找到原始目录

时间:2013-07-25 16:30:44

标签: java android android-studio ormlite

根据上一个问题的说明: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

10 个答案:

答案 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)

  1. 右键单击DBConfigUtil文件并运行DBConfigUtil.main();
    1. 转到编辑配置部分。
    2. 确保您的工作目录是这样的: /家庭/ XYZ /项目/ xyz_project /应用程序/ SRC /主
    3. 将JRE更改为JDK1.8
    4. 在发布前部分中删除Make。
    5. 确定
  2. 再次运行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)

由于我必须从上述所有答案中收集并撰写正确的答案,我在这里为您提供完整的解决方案:

  1. 将您的配置文件(例如“OrmliteDatabaseConfigUtil”)放在Android项目根目录包下 - - &gt; app-&gt; src-&gt; java-&gt; com.your_package

  2. 确保您拥有所需的所有文件。

  3. 添加'raw'目录和'ormlite_config.txt“

  4. 如果您使用的是ormLite guide to 'Using Table Config File'

    String configPath =“\ res \ raw \ ormlite_config.txt”;

  5. 设置完毕后
  6. ,转到配置文件,右键单击“run ... main()” 之后,如果第一次运行不起作用,请转到工作室工具栏中的运行部分,单击小箭头并单击“编辑配置”。确保以下内容:

  7. 一个。主类 - 使用完整的包名称,它应该自动建议您的类名。

    湾工作目录 - C:\ Users \ ... \ app \ src \ main

    c。使用Module:app

    的classpth

    d.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)