1、pom文件新增依赖
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-posix</artifactId>
<version>3.0.1</version>
</dependency>
2、通过POSIXFactory实现工作路径切换
package com.stargraph
import jnr.posix.POSIXFactory
import scala.io.Source
/**
* Created by zhoujiamu on 2019/7/26.
*/
object Test {
def main(args: Array[String]): Unit = {
POSIXFactory.getPOSIX().chdir("/Users/stargraph/workspace/fork/NlpApi") // /Users/stargraph/workspace/fork/NlpApi 是需要切换的路径
Source.fromFile("run.sh").getLines().foreach(println)
}
}
上述切换工作目录只在当前的类生效,在其他类不生效,例如下面new HZNLP()时,HZNLP在实例化时候会读取文件,此时还是会出现找不到
object Test {
def main(args: Array[String]): Unit = {
POSIXFactory.getPOSIX.chdir("/Users/stargraph/workspace/fork/NlpApi/lalala")
val nlp = new HZNLP("conf/NLPProcess.properties")
println(nlp.segJson("我爱自然语言处理"))
}
}
Exception in thread "main" java.io.FileNotFoundException: /Users/stargraph/workspace/fork/NlpApi/conf/Preprocess.properties (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at com.haizhi.nlp.Preprocess.init(Preprocess.scala:30)
at com.haizhi.nlp.Preprocess$.getInstance(Preprocess.scala:195)
at com.haizhi.nlp.HZNLP.<init>(HZNLP.scala:47)
at com.stargraph.Test$.main(Test.scala:23)
at com.stargraph.Test.main(Test.scala)
为了使得切换后对其他类生效,则需要再设置系统的user.dir
object Test {
def main(args: Array[String]): Unit = {
System.setProperty("user.dir", "/Users/stargraph/workspace/fork/NlpApi/lalala")
POSIXFactory.getPOSIX.chdir("/Users/stargraph/workspace/fork/NlpApi/lalala")
val nlp = new HZNLP("conf/NLPProcess.properties")
println(nlp.segJson("我爱自然语言处理"))
}
}
来源:oschina
链接:https://my.oschina.net/u/3780646/blog/3192843