加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

配置Scala工作表的工作目录

发布时间:2020-12-16 08:52:46 所属栏目:安全 来源:网络整理
导读:我希望 Scala工作表(和 Scala解释器)的工作目录是 Eclipse项目路径而不是Eclipse安装目录.我怎样(非编程)实现这一目标? 我知道我可以使用System.setProperty(“user.dir”,“…”),但不属于代码的恕我直言.此外,它似乎不起作用: object ScratchWS { System
我希望 Scala工作表(和 Scala解释器)的工作目录是 Eclipse项目路径而不是Eclipse安装目录.我怎样(非编程)实现这一目标?

我知道我可以使用System.setProperty(“user.dir”,“…”),但不属于代码的恕我直言.此外,它似乎不起作用:

object ScratchWS {
  System.setProperty("user.dir","C:")          //> res0: String = C:adt-bundle-windows-x86_64-20130219eclipse
  new File("putty.exe").exists()                  //> res1: Boolean = false

  new File("C:putty.exe").exists()              //> res2: Boolean = true
}

解决方法

从Scala Worksheet 0.2.1开始,无法控制工作表工作目录.

出于安全原因,一旦JVM运行,就不能(直接)更改JVM的工作原理.有关详情,请参见Changing the current working directory in Java?.

因此,通常最好始终指定完全限定的路径,或者从完全限定的“锚点”指定相对路径.

这是我在Scala工作表中获得这样一个“锚点”时遇到的一个黑客攻击

object WorksheetProjectDirHack {
    // Yuck.... See: https://github.com/scala-ide/scala-worksheet/issues/102
    import Properties._
    val pathSep = propOrElse("path.separator",":")
    val fileSep = propOrElse("file.separator","/")
    val projectDir = javaClassPath.split(pathSep).
        filter(_.matches(".*worksheet.bin$")).head.
        split(fileSep).dropRight(2).mkString(fileSep)

    val otherProjectFile = new File(projectDir,"src/main/resources/data.bin")
}

它基本上是通过利用Eclipse项目目录中创建的.worksheet / bin目录的存在并附加到Scala Worksheet类路径来实现的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读