我最近了解到JDK7中存在用于热点编译器优化的错误.看到 这个帖子.
我不太了解这些错误的细节,但它们似乎与循环优化有关.由于我要在-server模式下运行一些大型程序(当然包含很多循环),我想知道使用JDK7是否安全?谢谢.
在尝试使用Eclipse IDE(使用jdk1.6)从客户端调用使用NETbeans(使用jdk1.7)创建的EJB时,我收到以下错误 -
Exception in thread "main" java.lang.UnsupportedClassVersionError: stateless/TestEjbRemote : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at com.sun.ejb.EJBUtils.getBusinessIntfClassLoader(EJBUtils.java:688)
at com.sun.ejb.EJBUtils.loadGeneratedRemoteBusinessClasses(EJBUtils.java:463)
at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:414)
at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:75)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:556)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:514)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at Main.main(Main.java:19)
Run Code Online (Sandbox Code Playgroud)
任何解决这个问题的方法?
我们开始注意到,使用Java 7(特别是更新4),我们的所有用户都开始使用我们的Webstart应用程序看到这一点:
[14:42:58,422] AWT-EventQueue-0(DEBUG) java.lang.SecurityException: class "CLASSNAME" does not match trust level of other classes in the same package
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.CPCallbackHandler$ChildElement.checkResource(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath$JarLoader.checkResource(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath$JarLoader.getResource(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader$1.run(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader$1.run(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.security.AccessController.doPrivileged(Native Method)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.net.URLClassLoader.findClass(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.lang.ClassLoader.loadClass(Unknown Source)
[14:42:58,422] AWT-EventQueue-0(DEBUG) at java.lang.ClassLoader.loadClass(Unknown Source)...More
Run Code Online (Sandbox Code Playgroud)
其中CLASSNAME =几乎每个类都在应用程序执行中的几个jar中的随机点,打破了几个行为.如果我们的用户使用Java 6,他们没有问题!只是7(更新4).我们签署所有的罐子,主要的应用罐子和它的库罐子.即启动我们的webstart应用程序的用户看到蓝色盾牌而不是黄色或红色.
这显然是一个问题,因为用户现在更频繁地升级到Java 7.我试图通过使用先前的安装(工作)或安装新的应用程序来强制我们的应用程序在用户计算机上使用Java 6 …
我需要帮助让CommonJS使用Java 7和Rhino 1.7R3.
Rhino 1.7R3支持CommonJS模块:
Java 7与Rhino 1.7R3捆绑在一起.不幸的是,Java 7的Rhino是一个修改版本,它不包括这个org.mozilla.javascript.commonjs包:
我想通过javax.scriptAPI 使用Rhino 1.7R3对CommonJS的支持,如下所示:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
engine.put("markdown", markdown);
engine.eval("var html = require('./Markdown.Sanitizer').getSanitizingConverter().makeHtml(markdown);");
return (String) engine.get("html");
Run Code Online (Sandbox Code Playgroud)
(我通过验证ScriptEngineManager确实使用了Rhino 1.7R3引擎.)我想也许我可以将以下依赖项添加到类路径中
<dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
<version>1.7R3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
而CommonJS-特别是,require()- 将开始工作.但事实并非如此.当我尝试使用时,require()我得到了
Caused by: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "require" is not defined. (<Unknown source>#2)
at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3773)
at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3751)
at sun.org.mozilla.javascript.internal.ScriptRuntime.notFoundError(ScriptRuntime.java:3836)
Run Code Online (Sandbox Code Playgroud)
如何让Java 7与完整版Rhino 1.7R3一起使用,以便获得CommonJS支持?
编辑:我发现了以下问题,它涉及完全相同的主题:
受访者表示也许可以用CommonJS Rhino 1.7R3替换有限的Rhino 1.7R3,但没有说明如何做到这一点.这就是我在这里问的问题.
当我使用以下内容在Oracle Linux中安装jdk 1.7时
rpm -ivh jdk-7u9-linux-i586.rpm
但是我收到以下错误,如何解决这些错误并安装jdk 1.7?
任何帮助都非常值得赞赏.
谢谢
rpm -ivh /tmp/mnt/jdk-7u9-linux-i586.rpm
Preparing... ########################################### [100%]
1:jdk ########################################### [100%]
Unpacking JAR files...
rt.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/rt.pack
jsse.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/jsse.pack
charsets.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/charsets.pack
tools.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/lib/tools.pack
localedata.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/ext/localedata.pack
plugin.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/plugin.pack
javaws.jar...
Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/javaws.pack
deploy.jar...
Error: …Run Code Online (Sandbox Code Playgroud) 在对溢出文件规定:
OVERFLOW - 表示事件可能已丢失或丢弃.
它没有说在什么情况下我应该期望事件丢失或丢弃?起初我以为这是将很多文件写入文件夹的结果.我创建了几千个零大小的文件,并将它们移动到受监控的目录.没有溢出.
我错过了什么?
我在Intellij 12.0.4中使用JDK 7.当我尝试创建一个多捕获块时,会出现"此语言级别不支持多捕获"错误.我发现了这个问题,但答案对我不起作用.这就是答案:
单击文件菜单,打开项目结构,然后在"设置"下应该有"项目".在该选项卡中,将有一个SDK设置选项,指定您要使用的语言版本.有关详细信息,请参阅JetBrains帮助页面("项目语言级别").
如何使用加密密码解密jasypt.
package com.uk.mysqlmaven.jsf.test;
import org.jasypt.util.password.StrongPasswordEncryptor;
import org.jasypt.util.text.StrongTextEncryptor;
public class PasswordEncryptionDecryptionUsingJASYPT {
public static void main(String[] args) {
try {
String password = "password";
StrongPasswordEncryptor encryptor = new StrongPasswordEncryptor();
String encryptedPassword = encryptor.encryptPassword(password);
if (encryptor.checkPassword(password, encryptedPassword)) {
//correct
System.out.println("Encrypted: "+ encryptedPassword);
} else {
//bad again
System.out.println("Error: ");
}
StrongTextEncryptor textEncryptor = new StrongTextEncryptor();
textEncryptor.setPassword(encryptedPassword);
String decryptedPassword = textEncryptor.decrypt(encryptedPassword);
System.out.println("Decrypted: "+ decryptedPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用jasypt解密密码时,控制台中会显示错误.
Encrypted: JIOYXNa1+3+QefY2S7sas7LmhyOuDQcG8TTsQoTkqj0OtobCvwAFHXxoTr7z6HuP
org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. …Run Code Online (Sandbox Code Playgroud) 编写一些Java代码时遇到编译失败,我将其提炼为以下测试用例:
import java.util.Collections;
import java.util.List;
public class TernaryFailure {
public static List<String> thisWorks() {
return Collections.emptyList();
}
public static List<String> thisFailsToCompile() {
return true ? Collections.emptyList() : Collections.emptyList();
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码无法javac使用JDK 1.7.0_45 进行编译:
Run Code Online (Sandbox Code Playgroud)$ javac TernaryFailure.java TernaryFailure.java:10: error: incompatible types return true ? Collections.emptyList() : Collections.emptyList(); ^ required: List<String> found: List<Object> 1 error
但是,它在JDK 1.8.0_05中编译时没有任何错误.
这是Java 7实现中的错误吗?或者是否对Java 8中的Java语言规范进行了增强以开始允许这样做 - 如果是这样,那么改变是什么?
我正在使用Apache-Camel 2.15.2.
我正在尝试CamelContext动态添加路由,但我遇到了一个令我感到困惑的问题.
据我所知,我确实将路由添加到正确的路径CamelContext,看起来它们configure()被调用而没有抛出异常.但是当我尝试执行主路由时,我得到一个运行时异常告诉我,我动态添加的路由不存在.
这是我的代码的简化版本:
public class MainRouteBuilder extends RouteBuilder
{
public static CamelContext camelContext;
public static boolean returnLabel = true;
public static RouteBuilder nestedRouteBuilder;
@Override
public void configure() throws Exception
{
System.out.println("Building main route!");
System.out.println("Context: " + getContext());
camelContext = getContext();
from("direct:mainRoute")
//3. I do not actually want to instantiate RouteContainer like this each time I call this route.
//I would simply want to reuse a reference to an instance I created outside …Run Code Online (Sandbox Code Playgroud) java-7 ×10
java ×9
apache-camel ×1
commonjs ×1
ejb ×1
encryption ×1
generics ×1
installation ×1
io ×1
jasypt ×1
java-8 ×1
javascript ×1
jdk1.6 ×1
linux ×1
multi-catch ×1
nio2 ×1
oracle ×1
require ×1
rhino ×1
security ×1
tomcat7 ×1
windows-8 ×1