小编Yan*_*eve的帖子

java类加载器和运行时编译

尽管警告会放弃我目前的行动方案,但我目前看不到更好的方法来解决我的问题.我必须 在运行时生成 Java代码,然后编译它,加载它并引用它.

问题是生成的代码导入已经由系统类加载器加载的代码(我想) - 也就是代码存在于我的类路径中的一个jar中.(我在Java 6上运行Tomcat 6 Web容器.)您可能会问自己为什么这是一个问题 - 确定不知道 - 但事实是我遇到了编译错误:

/W:/.../parser/v0.5/AssignELParser.java:6:包com.xxx.yyy.zzz.configuration不存在

下面是一些关于互联网的例子,我定义了以下类:

class MemoryClassLoader extends ChainedAction {

    private static final Logger LOG = Logger.getLogger(MemoryClassLoader.class);

    private LoaderImpl impl;

    private class LoaderImpl extends ClassLoader {

        // The compiler tool
        private final JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

        // Compiler options
        private final Iterable<String> options = Arrays.asList("-verbose");

        // DiagnosticCollector, for collecting compilation problems
        private final DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();

        // Our FileManager
        private final MemoryFileManager manager = …
Run Code Online (Sandbox Code Playgroud)

java compiler-construction code-generation runtime classloader

6
推荐指数
1
解决办法
2216
查看次数

与外部同步在同一对象上的内部同步

最近我参加了一些关于一些设计模式的讲座:

显示以下代码:

public static Singleton getInstance()
{
  if (instance == null)
  {
    synchronized(Singleton.class) {      //1
      Singleton inst = instance;         //2
      if (inst == null)
      {
        synchronized(Singleton.class) {  //3
          inst = new Singleton();        //4
        }
        instance = inst;                 //5
      }
    }
  }
  return instance;
}
Run Code Online (Sandbox Code Playgroud)

取自:双重检查锁定:取两个

我的问题与上面提到的模式无关,但是与synchronized块有关:

对于同步操作是否在同一个对象上进行的事实,在第1行和第3行中完成的双重同步是否有任何好处?

java multithreading synchronization

6
推荐指数
1
解决办法
1873
查看次数

不同的Java编译器(供应商不同)会产生不同的字节码

给定相同的主要版本,比如Java 7,做不同的Java编译器(例如,Oracle的热点,JRockit或IBM的J9等......)将给定的java源代码文件编译成相同的bytcode?

扫描Java 7语言规范似乎正在讨论的是语言的语义,而不是将代码转换为字节码.

这个问题与不同的major.minor版本不同,给定供应商生成相同的字节码.这个问题已在这里得到解答- 可能是.

从以下答案Java类文件的创建是否确定?和这个问题的答案是指评论沿侧两个答案上述问题MAJOR.MINOR 12,我收集了答案,我的问题是YES.

上述摘录如下:

JLS留下了许多实现细节,从一个实现到另一个实现.

但是,JLS没有指定从源代码到生成的字节代码的1:1映射,因此您不应该依赖于生成完全相同的字节代码.

然而,这里的评论意味着不同:

它是编译器,即javac,使用BLAH BLAH BLAH创建代码.这与HotSpot无关.

这意味着给定代码X所有javac实现(相同版本/不同供应商)必须生成相同的Y字节码.

我不明白这是怎么回事,但我无法证实它不是(或者我认为,见上文)是正确的.

可以给出明确的答案吗?

java compiler-construction bytecode javac

6
推荐指数
1
解决办法
1758
查看次数

Scala:如何通过函数对象参数实现签名不同的通用流程?

我是一名Java程序员,正在迈向Scala编程.

我已经定义了一个类似的函数(可能是惯用错误,我不知道......):

def someGenericAlgorithm(param1: String, param1: String, param3: String) = {

    val triedResult1 = someFunction(param1)
    triedResult1 match {
      case Success(result1) =>
        val triedResult2 = someOtherFunction(param2)
        triedResult2 match {
          case Success(result2) =>
            val triedPolymorphicResult = someToBeReplacedAccordingToSpecificLogicFunction(result1, result2, param3)
            triedPolymorphicResult match {
              case Success(polymorphicResult) =>
                doSomethingGeneric(polymorphicResult)                    
                ....
              case Failure(exception) =>
                ....
            }
          case Failure(exception) =>
            ....
        }
      case Failure(exception) =>
        ....
    }
  }
Run Code Online (Sandbox Code Playgroud)

因此该函数接收3个参数,按顺序处理前两个参数,获取处理结果并将其传递给someToBeReplacedAccordingToSpecificLogicFunction第三个参数的旁边.

现在我希望编写一个类似的函数,因为前两个函数调用存在,错误逻辑是相同的,唯一的区别someToBeReplacedAccordingToSpecificLogicFunction是现在是aReplacementLogicFunction.

如果两个函数具有相同的签名,我想这不会是一个问题,但是,它们没有,它aReplacementLogicFunction有不同的参数,更具体地说,还有两个参数.那么你可以说,我可以在第一种情况下传入Option这两个Options的参数None,这样我就可以将我的两个函数对齐为相同的签名,因此: …

java functional-programming scala idiomatic

6
推荐指数
1
解决办法
157
查看次数

slick 3自动生成 - 默认值(timestamp)列,如何定义Rep [Date]功能

我有以下postgres列定义:

record_time TIMESTAMP WITHOUT TIME ZONE DEFAULT now()
Run Code Online (Sandbox Code Playgroud)

我如何将其映射到光滑?请考虑我希望映射now()函数生成的默认值

即:

def recordTimestamp: Rep[Date] = column[Date]("record_time", ...???...)
Run Code Online (Sandbox Code Playgroud)

是否应该将任何额外的定义放在...???...当前所在的位置?

编辑(1)

我不想用

column[Date]("record_time", O.Default(new Date(System.currentTimeMillis()))) // or some such applicative generation of the date column value
Run Code Online (Sandbox Code Playgroud)

postgresql scala slick slick-3.0

6
推荐指数
1
解决办法
2884
查看次数

如何评估bash shell中的给定路径

是否有一个bash命令,它将文件路径作为输入并返回绝对文件路径?更具体地说,我想要一个命令,它将路径视为输入,例如:

/tmp/yaneeve/kit/linux/../../output/kit/SOURCES//usr//apps/myapp/lib

并返回路径:

/tmp/yaneeve/output/kit/SOURCES/usr/apps/myapp/lib

谢谢!

unix linux bash filepath

5
推荐指数
2
解决办法
2914
查看次数

为什么我的方面在原始设置中执行而不是作为单独的jar打包并从其他地方调用?

我是aspectj的新手......

我编写了以下方面,旨在将记录添加到类型的函数调用public * doSomething*(..).如果我的主类是同一个项目的一部分,则执行方面编织时不会出现故障并执行代码.如果我将编织的代码打包到jar中并从另一个eclipse项目调用它 - 则不会执行建议.另一种情况是将方面(.aj)仅打包到一个单独的jar中并将该jar添加到eclipse中的"Aspect Path",这使得eclipse能够正确地编织方面.事情是我需要把它包装成一个jar并从其他地方调用代码.这也不起作用(毫不奇怪,我猜...)为什么?

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.reflect.CodeSignature;
import org.apache.log4j.Logger;

public aspect Logging {
    pointcut allPublic(): !cflow(call(public void main(..))) && (call(public * doSomething*(..)));

    private static final Logger log = Logger.getLogger("Logging.aspect");

    @SuppressWarnings({"unchecked", "unused"})
    private void printParameters(JoinPoint jp) {
        CodeSignature methodSignature = (CodeSignature) jp.getSignature();
        String methodName = methodSignature.getName();
        Object[] paramNames = methodSignature.getParameterNames();
        Class[] paramTypes = (Class[])methodSignature.getParameterTypes();
        Object[] paramObjects = jp.getArgs();
        StringBuffer infoMsg = new StringBuffer();

        infoMsg.append("Entering function: " + methodName);
        if (paramNames != null && paramNames.length > …
Run Code Online (Sandbox Code Playgroud)

java eclipse aspectj jar

5
推荐指数
1
解决办法
2231
查看次数

apache sshd(MINA)有多成熟?

有没有人曾经使用过apache sshd(基于Apache MINA)?

我想得到一些用户输入.

  • 它成熟了吗?
  • 它有(恼人的)错误吗?
  • API怎么样?
  • 可以找到有用的文档/教程吗?
  • 等等

谢谢大家的反馈.

java apache ssh

5
推荐指数
0
解决办法
1880
查看次数

没有加载HikariCP驱动程序的光滑3.0.0 - IllegalAccessException:AbstractHikariConfig无法访问具有修饰符"private"的成员

我试图使用tminglei/slick-pg v9.0.0和光滑的3.0.0并得到一个IllegalAccessException:

akka.actor.ActorInitializationException: exception during creation
    at akka.actor.ActorInitializationException$.apply(Actor.scala:166) ~[akka-actor_2.11-2.3.11.jar:na]
    ...
Caused by: java.lang.RuntimeException: driverClassName specified class 'com.github.tminglei.MyPostgresDriver$' could not be loaded
    at com.zaxxer.hikari.AbstractHikariConfig.setDriverClassName(AbstractHikariConfig.java:370) ~[HikariCP-java6-2.3.8.jar:na]
    at slick.jdbc.HikariCPJdbcDataSource$$anonfun$forConfig$18.apply(JdbcDataSource.scala:145) ~[slick_2.11-3.0.0.jar:na]
    at slick.jdbc.HikariCPJdbcDataSource$$anonfun$forConfig$18.apply(JdbcDataSource.scala:145) ~[slick_2.11-3.0.0.jar:na]
    at scala.Option.map(Option.scala:146) ~[scala-library-2.11.7.jar:na]
    at slick.jdbc.HikariCPJdbcDataSource$.forConfig(JdbcDataSource.scala:145) ~[slick_2.11-3.0.0.jar:na]
    at slick.jdbc.HikariCPJdbcDataSource$.forConfig(JdbcDataSource.scala:135) ~[slick_2.11-3.0.0.jar:na]
    at slick.jdbc.JdbcDataSource$.forConfig(JdbcDataSource.scala:35) ~[slick_2.11-3.0.0.jar:na]
    at slick.jdbc.JdbcBackend$DatabaseFactoryDef$class.forConfig(JdbcBackend.scala:223) ~[slick_2.11-3.0.0.jar:na]
    at slick.jdbc.JdbcBackend$$anon$3.forConfig(JdbcBackend.scala:33) ~[slick_2.11-3.0.0.jar:na]
    ...
Caused by: java.lang.IllegalAccessException: Class com.zaxxer.hikari.AbstractHikariConfig can not access a member of class com.github.tminglei.MyPostgresDriver$ with modifiers "private"
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:109) ~[na:1.7.0_79]
    at java.lang.Class.newInstance(Class.java:373) ~[na:1.7.0_79]
    at com.zaxxer.hikari.AbstractHikariConfig.setDriverClassName(AbstractHikariConfig.java:366) ~[HikariCP-java6-2.3.8.jar:na]
    ... 43 …
Run Code Online (Sandbox Code Playgroud)

reflection scala slick hikaricp slick-3.0

5
推荐指数
1
解决办法
2398
查看次数

选项列表中的Nones中的一些无形查找实例

假设我有以下类层次结构:

sealed trait Animal

case class Cat(isFriendly: Boolean) extends Animal
case class Dog(color: String) extends Animal
case class Fish(isFreshWater: Boolean) extends Animal
Run Code Online (Sandbox Code Playgroud)

现在我有一个类型的实例

Option[Cat] :: Option[Dog] :: Option[Fish] :: HNil
Run Code Online (Sandbox Code Playgroud)

但是这个例子有一个限制.它只能是以下形式之一

Some(Cat(???)) :: None :: None :: HNil
Run Code Online (Sandbox Code Playgroud)

要么

None :: Some(Dog(???)) :: None :: HNil
Run Code Online (Sandbox Code Playgroud)

要么

None :: None :: Some(Fish(???)) :: HNil
Run Code Online (Sandbox Code Playgroud)

首先,原谅任何不连贯 - 这是我试图解决的一个更大的问题的一部分,尚未明确阐述

其次,这???只是我为实际实例设计的占位符,例如:

None :: Some(Dog(brown)) :: None :: HNil
Run Code Online (Sandbox Code Playgroud)

事实上,我对于没有形状的人来说相当新鲜,而且我并不确切知道它的价值是否有所作为???.


转到问题

有没有办法在HList上"迭代"并提取Some

我理解,一般来说,不可能如以下两个问题所示.我想知道是否添加上面设置的限制会产生影响

/sf/answers/2001871021/ …

scala hlist shapeless

5
推荐指数
1
解决办法
161
查看次数