小编Jus*_*s12的帖子

c:\ Windows\System32\java.exe默认的证书存储位置?

我没有设置java_home,我需要知道c:\Windows\System32\java.exe文件指向的位置.我的系统上有几个JDK和JRE.

原因是我尝试通过SSL连接到某个服务器,并且在我将证书导出到相应的JRE(我可以通过Netbeans选项看到)后,它在Netbeans中工作

但是,当我通过命令行连接时,我收到SSL错误.我尝试将证书添加到我的所有JRE中,但我无法让它工作.我认为这个Windows快捷方式指向某个我忽略的地方是一个问题.

有没有一种简单的方法可以找出哪个JRE是默认的?

[编辑]或者我需要在默认的JRE中找到默认密钥库的位置.

[编辑]我的问题详述如下:

以下两个给出了SSL错误:

"c:\Program Files\Java\jre6\bin\java.exe" -cp myjar.jar mypackage.myclass 
"c:\Program Files (x86)\Java\jre6\bin\java.exe" -cp myjar.jar mypackage.myclass 
Run Code Online (Sandbox Code Playgroud)

以下两项工作

"c:\Program Files\Java\jdk1.6.0_24\bin\bin\java.exe" -cp myjar.jar mypackage.myclass 
"c:\Program Files (x86)\jdk1.6.0_24\bin\jre6\bin\java.exe" -cp myjar.jar mypackage.myclass 
Run Code Online (Sandbox Code Playgroud)

我已使用所有四个命令导出证书:

"c:\Program Files\Java\jdk1.6.0_24\bin\bin\keytool.exe" -import -alias myalias -file mycertfile
"c:\Program Files (x86)\Java\jdk1.6.0_24\bin\bin\keytool.exe" -import -alias myalias -file mycertfile
"c:\Program Files\Java\jre6\bin\bin\keytool.exe" -import -alias myalias -file mycertfile
"c:\Program Files (x86)\Java\jre6\bin\bin\keytool.exe" -import -alias myalias -file mycertfile
Run Code Online (Sandbox Code Playgroud)

所以似乎keytool使用的是不同的商店java.exe.

我会很感激一些帮助.

java windows-7

3
推荐指数
1
解决办法
1万
查看次数

使用Java中的参数和内部类调用scala抽象类

如果我定义一个Scala类:

 class X(i:Int) {
   println (i)
 }
Run Code Online (Sandbox Code Playgroud)

如何在Java代码中使用此类?

[编辑]实际上,我的问题稍微复杂一些

我有一个抽象的课

 abstract class X(i:Int) {
   println (i)
   def hello(s:String):Unit
 }
Run Code Online (Sandbox Code Playgroud)

我需要在Java代码中使用它.是否可以轻松完成?

[EDIT2]考虑以下代码

 object B {
    case class C(i:Int)
 }
 abstract class X(i:Int) {
   println (i)
   def hello(a:B.C):Unit
 }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,以下java代码在Netbeans IDE中出错,但构建正常:

 public class Y extends X  {
    public void hello(B.C c) {
       System.out.println("here");
    }
    public Y(int i) {
       super(i);
    }
 }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

hello(B.C) in Y cannot override hello(B.C) in X; overridden method is static, final
Run Code Online (Sandbox Code Playgroud)

Netbeans 6.8,Scala 2.8.

截至目前,我认为唯一的解决方案是忽略NB错误.

这是一张显示我得到的确切错误的图片: 使用java中的scala代码的IDE错误

java scala scala-java-interop

3
推荐指数
1
解决办法
581
查看次数

是否可以在Scala中保证尾递归优化?

假设我有以下代码

def foo(x:Int):Unit = {
   if (x == 1) println ("done")
   else foo(scala.util.Random.nextInt(10))
}
Run Code Online (Sandbox Code Playgroud)

是否保证编译器进行尾递归优化?

scala tail-recursion

3
推荐指数
1
解决办法
576
查看次数

当某些元素不是数组时,在Scala 2.8中展平数组

如果我有

var a = Array(Array(1, 2), 3, Array(4,5,6))
Run Code Online (Sandbox Code Playgroud)

我想把它转换成

Array(1, 2, 3, 4, 5, 6)
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?这篇文章中给出了列表的解决方案, 但它不适用于数组.

我也试过了

def flatArray(a:Array[Any])= a.map(x => x match { case ar:Array[_] => ar; case _ => Array(x) } )
Run Code Online (Sandbox Code Playgroud)

但输出是类型ArraySeq,我无法看到如何将其转换为Array

scala

2
推荐指数
1
解决办法
1776
查看次数

Scala中匹配String和Int之间的区别

考虑以下两个代码片段:

scala> def f1(x:Any) = x match { case i:String => i; case _ => null }
f1: (x: Any)String

scala> def f2(x:Any) = x match { case i:Int => i; case _ => null }
f2: (x: Any)Any
Run Code Online (Sandbox Code Playgroud)

为什么是f2回归类型Any,f1而是String?我期待要么返回Any要么f2返回Int.

scala scala-2.8

2
推荐指数
1
解决办法
459
查看次数

Scala 2.8:如何初始化子类

请考虑以下代码:

abstract class X {
  def a:Unit
  a
}

class Y extends X {
  var s:String = "Hello"
  def a:Unit = println ("String is "+s)
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下输出:

scala> new Y
String is null
res6: Y = Y@18aeabe
Run Code Online (Sandbox Code Playgroud)

如何在调用时让父类X等待s初始化a

scala scala-2.8

2
推荐指数
1
解决办法
665
查看次数

如何共享Amazon AWS凭据(S3,EC2等)?

我有一个个人亚马逊帐户,我用它来做很多购物.我最近还将此帐户与AWS相关联.现在,有些人正在使用我的帐户进行亚马逊的实验.我怎样才能让他们访问管理控制台等,而不给他们我的亚马逊凭证.我不愿意分享我的亚马逊购物历史或我在亚马逊上使用的其他东西,只是EC2和S3等云服务.

他们需要的是访问完整的管理控制台以及AWS上的任何监控工具.

credentials amazon-s3 amazon-ec2 amazon-web-services

2
推荐指数
1
解决办法
1780
查看次数

如何在ASM中读取最终字符串值?

假设某人给了我以下源代码的Java字节码:

class MyClass {
  public static void foo() {
     final String bar = "Hello";         
  }
}
Run Code Online (Sandbox Code Playgroud)

我想扫描这个类中的所有方法MyClass.如果任何方法包含一个final String被调用的变量bar,我需要输出变量的文字值.在这种情况下,Hello.

我设法得到bar方法中调用的变量如下:

// Scala code
import scala.collection.JavaConversions._
import org.objectweb.asm._
import org.objectweb.asm.tree._

def processClass(is:java.io.InputStream) = {
  val cn = new ClassNode
  val cr = new ClassReader(is)
  cr.accept(cn, 0)
  is.close
  val methods = cn.methods.asInstanceOf[java.util.List[MethodNode]]
  val m = methods(0)  // get first method as an example
  val vars = m.localVariables.asInstanceOf[java.util.List[LocalVariableNode]];
  val bar = vars.find(_.name == "bar").find(v …
Run Code Online (Sandbox Code Playgroud)

java scala bytecode java-bytecode-asm

2
推荐指数
1
解决办法
405
查看次数

Scala:不正确的警告"匹配可能不详尽"

请考虑以下代码段:

sealed abstract class Bar
object B1 extends Bar
object B2 extends Bar
object B3 extends Bar
case class A(bar:Bar)

def foo(a:A) = a match {
    case A(bar@(B1|B2)) =>
        bar match { // gives warning here
            case B1 => 
            case B2 => 
        } 
    case _ =>
}
Run Code Online (Sandbox Code Playgroud)

在上面,我确保第一种情况只在A类型A(B1)A(B2)(至少我认为这意味着)时匹配.但是,我收到以下错误:

warning: match may not be exhaustive.
It would fail on the following input: B3
       bar match {
       ^
Run Code Online (Sandbox Code Playgroud)

任何人都可以详细说明警告的来临吗?

编辑:答案后,似乎编译器类型barBar无需记住它匹配.这绝对不是一个bug.该编译器足够智能,不会发出以下警告:

sealed abstract …
Run Code Online (Sandbox Code Playgroud)

scala

2
推荐指数
1
解决办法
435
查看次数

在Scala/Java中使用AtomicBoolean进行数据库锁定是否安全?

我有一个应用程序,我想确保一个方法最多同时调用一次,比如在数据库中更新用户余额时.

我正在考虑使用以下锁定机制:(显示下面的Scala代码,但应该与Java Lambdas类似):

object Foo{
    val dbLocked = new java.util.concurrent.atomic.AtomicBoolean(false)

    def usingAtoimcDB[T](f: => T):T = {
        if (dbLocked.get) throw new Exception("db is locked")
        dbLocked.set(true)
        try f
        finally dbLocked.set(false)    
    }
}
Run Code Online (Sandbox Code Playgroud)

usingAtoimcDB可以同时调用时使用是否安全?

编辑:下面更正的代码,如下面的答案所示:

def usingAtoimcDB[T](f: => T):T = {
  if(dbLocked.compareAndSet(false, true)) {
   //db is now locked
   try f
   finally dbLocked.set(false)
  } else {
   //db is already locked
   throw new Exception("db is locked")
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑2:

使用spinloop.这也行吗?

def usingAtoimcDB[T](f: => T):T = {
  while (!dbLocked.compareAndSet(false, true)) {Thread.sleep(1)}
  try f …
Run Code Online (Sandbox Code Playgroud)

java multithreading scala java.util.concurrent

2
推荐指数
1
解决办法
989
查看次数