我的 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。谢谢你们。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!