gpt4 book ai didi

Grails Util 从 Bootstrap 读取文件

转载 作者:行者123 更新时间:2023-12-02 14:12:00 24 4
gpt4 key购买 nike

我的 web-app 文件夹中有一个 txt 文件,我想阅读它。它包含大量文本,这些文本应该在启动期间存储在一些数据库对象中,因此我没有将文本放入 bootstrap.groovy,而是在单独的 Util-Class 中编写了一个读取器方法。
util-class 放在 Grails utils 文件夹中,并被注入(inject) bootstrap.groovy。
运行“grails run-app”时它在我的本地机器上完美运行,但我服务器上部署的 war 只是说

2014-01-15 17:38:23,508 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error initializing the application: null java.lang.IllegalArgumentException at FileUtils.readFile(FileUtils.groovy:23) at BootStrap$_closure1.doCall(BootStrap.groovy:260) at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:308) at grails.util.Environment.executeForEnvironment(Environment.java:301) at grails.util.Environment.executeForCurrentEnvironment(Environment.java:277) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724)



这意味着这段代码:
        println ("PATH: " + org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext().getRealPath('hilfethemen.txt'))

有什么建议么?我已经尝试了很多,但许多博客文章已经过时了。谢谢!

编辑:
我的引导代码如下所示:
class BootStrap {

def statladsService

def init = { servletContext ->
// read helptopics

ArrayList<String> hilfethemen = new ArrayList<String>();


String content = FileUtils.readFile("hilfethemen.txt")
println ("STRING: " + content)
if(content!=null) {
for(String hilfethema : content.split("<hilfethema>")) {
hilfethemen.add(hilfethema);
}

ArrayList<String> clearLines = new ArrayList<String>();

for(String hilfethema : hilfethemen) {

def page = new Page()

for(String line : hilfethema.split("\n")) {
if(line.split("=")[0].equals("title")) {
// title
page.title=line.split("=")[1];
} else if(line.split("=")[0].equals("content")) {
// content
String lineContent=line.split("=")[1];
page.content=lineContent
}
}
page.save(flush:true)
}
}
}
}

Util-Class 实际上是这样的:
import org.apache.commons.io.IOUtils
import sun.nio.cs.StandardCharsets

import java.io.*;

public class FileUtils {

/**
* Reads a file and returns its content as UTF-8
* @param path
* @return
*/
public static String readFile(String path) {

String content = "";
/*
File fileDir = new File(path);
if(!fileDir.exists()) {
return null;
}
*/

println ("PATH: " + org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext().getRealPath('hilfethemen.txt'))
BufferedReader buf = new BufferedReader(new InputStreamReader(new FileInputStream(org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext().getRealPath('hilfethemen.txt')), "UTF-8"));



String str;

try {
while ((str = buf.readLine()) != null) {
content+=str+"\n";
}
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}

try {
buf.close();
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
return content;
}
}

最佳答案

知道了。即使我在 Controller 中使用这种代码,它也给了我错误。我决定检查我正在运行的 Tomcat 版本。遗憾的是,Tomcat 8 接缝有一些错误,例如 (http://mail-archives.apache.org/mod_mbox/tomcat-users/201308.mbox/%3C51FB92FE.4050408@gmail.com%3E),应该在 RC10 中修复,但无论如何都不能与 Grails 一起使用。
我刚刚降级到Tomcat 7,它现在​​可以工作了......
我只是应该睁大眼睛,下次不要安装 alpha。谢谢你们。

关于Grails Util 从 Bootstrap 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com