尽管警告会放弃我目前的行动方案,但我目前看不到更好的方法来解决我的问题.我必须 在运行时生成 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
最近我参加了一些关于一些设计模式的讲座:
显示以下代码:
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 7,做不同的Java编译器(例如,Oracle的热点,JRockit或IBM的J9等......)将给定的java源代码文件编译成相同的bytcode?
扫描Java 7语言规范似乎正在讨论的是语言的语义,而不是将代码转换为字节码.
这个问题与不同的major.minor版本不同,给定供应商生成相同的字节码.这个问题已在这里得到解答- 可能是.
从以下答案到Java类文件的创建是否确定?和这个问题的答案是指评论此沿侧两个答案上述问题MAJOR.MINOR 1和2,我收集了答案,我的问题是YES.
上述摘录如下:
JLS留下了许多实现细节,从一个实现到另一个实现.
和
但是,JLS没有指定从源代码到生成的字节代码的1:1映射,因此您不应该依赖于生成完全相同的字节代码.
然而,这里的评论意味着不同:
它是编译器,即javac,使用BLAH BLAH BLAH创建代码.这与HotSpot无关.
这意味着给定代码X所有javac实现(相同版本/不同供应商)必须生成相同的Y字节码.
我不明白这是怎么回事,但我无法证实它不是(或者我认为,见上文)是正确的.
可以给出明确的答案吗?
我是一名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,这样我就可以将我的两个函数对齐为相同的签名,因此: …
我有以下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) 是否有一个bash命令,它将文件路径作为输入并返回绝对文件路径?更具体地说,我想要一个命令,它将路径视为输入,例如:
/tmp/yaneeve/kit/linux/../../output/kit/SOURCES//usr//apps/myapp/lib
并返回路径:
/tmp/yaneeve/output/kit/SOURCES/usr/apps/myapp/lib
谢谢!
我是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) 有没有人曾经使用过apache sshd(基于Apache MINA)?
我想得到一些用户输入.
谢谢大家的反馈.
我试图使用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) 假设我有以下类层次结构:
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?
我理解,一般来说,不可能如以下两个问题所示.但我想知道是否添加上面设置的限制会产生影响