Tag: scala

如何在Scala 2.8注释中指定静态数组?

我一直在使用Hibernate Annotations 3.4.0在Scala 2.8.0中构建一些带注释的域类。 它一直工作正常,除了有一些注释将数组作为参数。 例如,这是我想在Scala中表达的Java注释: @OneToMany(mappedBy=”passport_id”, cascade=CascadeType.PERSIST) 但是,注释需要数组/集作为输入: [ERROR] …/Passport.scala:50: error: type mismatch; [INFO] found : javax.persistence.CascadeType(value PERSIST) [INFO] required: Array[javax.persistence.CascadeType] [INFO] @OneToMany(mappedBy=”passport_id”, cascade=CascadeType.PERSIST) 我尝试了各种括号,方形/角度/花括号等,以此类推: @OneToMany(mappedBy=”passport_id”, cascade=(CascadeType.PERSIST)) @OneToMany(mappedBy=”passport_id”, cascade=[CascadeType.PERSIST]) @OneToMany(mappedBy=”passport_id”, cascade=) @OneToMany(mappedBy=”passport_id”, cascade={CascadeType.PERSIST}) …但不幸的是,我已经达到了对Scala / Java注释的理解。 感谢帮助。

为什么java会抱怨有大量条目的jar文件?

我偶然发现了以下问题 – 当我创建包含超过65k条目的.jar文件时,java会抱怨“无效或损坏jarfile”。 例: $ # in fresh dir $ for i in {1..70000}; do touch $i; done $ jar cf app.jar {1..70000} $ java -jar app.jar Error: Invalid or corrupt jarfile app.jar 但如果我使用少量文件,它的工作原理如下: $ jar cf app.jar {1..60000} $ java -jar app.jar no main manifest attribute, in app.jar 我听说旧的.zip文件格式有65k文件限制,但Java 7默认情况下应该使用ZIP64。 为什么会这样? 有办法解决吗?

在哪里可以找到下载的sbt库?

sbt把下载的jar放在哪里? 我试图让sbt下载所有依赖项并将它们放在lib /目录下,这样我就可以将它们与ScalaIDE一起使用,但是在我成功运行sbt compile之后我不知道在哪里可以找到这些下载的.jars

如何诊断或检测Java静态初始化程序中的死锁

(在Java中使用静态初始化器是否是一个好主意超出了这个问题的范围。) 我在Scala应用程序中遇到死锁,我认为这是由编译类中的互锁静态初始化器引起的。 我的问题是如何检测和诊断这些死锁 – 我发现当涉及静态初始化程序块时,死锁的正常JVM工具似乎不起作用。 这是一个简单的Java应用程序示例,它在静态初始化程序中死锁: public class StaticDeadlockExample implements Runnable { static { Thread thread = new Thread( new StaticDeadlockExample(), “StaticDeadlockExample child thread”); thread.start(); try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void main(String[] args) { System.out.println(“in main”); } public static void sayHello() { System.out.println(“hello from thread ” + […]

如何从Java调用scala的Option构造函数

我正在研究一个混合的java / scala项目,我试图从Java调用scala对象的方法。 此方法将Option[Double]作为参数。 我认为这会奏效: Double doubleValue = new Double(1.0); scalaObj.scalaMethod(new Some(doubleValue)); 但Eclipse告诉我“构造函数Some(Double)未定义”。 我应该调用scala.Some的构造函数。 scala.Some不同?

Scala和Java BigDecimal

我想在我的应用程序中从Java切换到基于Math的模块的脚本语言。 这是由于Java的可读性和function限制。 例如,在Java中我有这个: BigDecimal x = new BigDecimal(“1.1”); BigDecimal y = new BigDecimal(“1.1”); BigDecimal z = x.multiply(y.exp(new BigDecimal(“2”)); 如您所见,如果没有BigDecimal运算符重载,简单的公式会很快变得复杂。 有了双打,看起来很好,但我需要精确度。 我希望Scala能做到这一点: var x = 1.1; var y = 0.1; print(x + y); 默认情况下,我会得到类似十进制的行为,唉,Scala默认情况下不使用十进制计算。 然后我在Scala中这样做: var x = BigDecimal(1.1); var y = BigDecimal(0.1); println(x + y); 我仍然得到一个不精确的结果。 在Scala中有什么我没做的吗? 也许我应该使用Groovy来最大化可读性(它默认使用小数)?

Java表达式树

是否有相当于.net的表达式树为JVM LINQ? 我想在Scala实现一些类似LINQ的代码结构,我想知道是否还要滚动我自己的表达式树库。 更新:我对linq等价物本身不感兴趣。 .net有一大组表达式树工具,可以很容易地在运行时动态编译代码,可以从代码中调用它。 我想进行的项目与数据库无关。 表达式树提供了一种简单的方法来描述对数据进行操作的代码。 如果没有库我的其他选项,我认为是创建一个发出字节代码的库。

使用Java的Spark作业服务器

我正在使用spark whith java,我想使用spark Job-Server。 为此我在这个链接中跟随了所有内容: https : //github.com/spark-jobserver/spark-jobserver 这是我项目中的scala类: import _root_.spark.jobserver.SparkJob import _root_.spark.jobserver.SparkJobValid import _root_.spark.jobserver.SparkJobValidation import com.typesafe.config._ import org.apache.spark._ import org.apache.spark.api.java.JavaSparkContext import spark.jobserver.{SparkJob, SparkJobValid, SparkJobValidation} object JavaWord extends SparkJob { def main(args: Array[String]) { val ctx = new SparkContext(“local[4]”, “JavaWordCount”) val config = ConfigFactory.parseString(“”) val results = runJob(ctx, config) } override def validate(sc: SparkContext, config: […]

Blowfish在Java / Scala中加密并在bash中解密

我正在尝试构建一个工具来解密scala应用程序中加密的bash中的内容: 但首先,我要在两种语言中成功编码相同的消息并使它们相等: 鉴于密码“0123456789abcdef” (hex:“30313233343536373839616263646566”和字节[]:[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102]) scala> import javax.crypto.Cipher scala> import javax.crypto.spec.SecretKeySpec scala> val cipher = Cipher.getInstance(“Blowfish”) scala> cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(“0123456789abcdef”.getBytes(“utf-8”), “Blowfish”)) scala> javax.xml.bind.DatatypeConverter.printBase64Binary(cipher.doFinal(“message”.getBytes(“utf-8”))) res7: String = K679Jz06jmc= 但我无法在bash中使用openssl重现相同的内容。 $ echo “message” | openssl enc -a -e -blowfish -nosalt -nopad -k “0123456789abcdef” LJ3iFJ2/mYk= $ echo “message” | openssl enc -a -e -blowfish -nosalt -nopad -k “30313233343536373839616263646566” JkkJgYv3fQg= […]

使用IntelliJ或Play时,如何使“Java Hot Spot MaxPermSize”警告消失?

当我启动IntelliJ或在Play项目中运行play时,我收到此警告。 Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0 我怎么让它消失? Maven的相同问题的答案是从MAVEN_OPTS环境变量中删除MaxPermSize选项。 我的机器上没有设置MAVEN_OPTS变量。 我想有一些类似的sbt设置,但我不知道它在哪里。 我看到了有关Java变化的许多解释 ,但是在使用Scala时,我没有看到任何有关如何使此警告消失的提示。 OS X 10.9.4。 Scala 2.11.1。 sbt 0.13.5 编辑 基本上我要问的是“我的系统MaxPermSize上的所有位置都可以设置在哪里?” 我的机器上sbt-launch-lib.bash设置sbt-launch-lib.bash 。 我确实找到了IntelliJ的MaxPermSize Scala-> JVM Parameters选项。 删除它会使IntelliJ中的警告消失。 编辑 改变了问题。 我最初说这发生在SBT。 (下面的一些评论解决了这个问题。)这是我的错误。 只有当我从命令行运行play时,才会运行SBT。 是Play的已知错误指定MaxPermSize参数吗? 有没有办法让它停止? 编辑 我认为这不是jdk 8中PermGen消除的重复。 该线程描述了警告出现的原因,但未解释如何更改IntelliJ或Play配置以使其不再显示。