由于Android目前不支持java7,我发现自己想知道如果他们正在努力支持它,他们是否已发表官方评论?
我正试图在我的eclipse indigo EE上的tomcat 7上启动服务器
,我收到以下错误:
"'在localhost上启动Tomcat v7.0服务器'遇到了问题.
指定的JRE安装不存在"
我检查了构建路径配置,在库部分我将
JDK7作为JRE System Libraray,当我检查"已安装的JRE ..."时,正确的
路径就在那里 - "C:\ Program Files\Java\jdk1.7.0_01" .
还有什么可以做的?非常感谢.
ps - 我也在使用maven 3.0.3
在浏览Java 7 API文档时,我偶然发现了新类java.lang.ClassValue,其中包含以下相当少的文档:
懒惰地将计算值与(可能)每种类型相关联.例如,如果动态语言需要为消息发送调用站点遇到的每个类构造消息调度表,则它可以使用a
ClassValue来缓存执行消息快速发送所需的信息,以便遇到每个类.
任何人都可以更好地解释这个类解决了什么问题,也许还有一些示例代码或已经使用过该类的开源项目?
更新:我仍然对使用这个新类的一些实际源代码或示例感兴趣.
我还在mlvm-dev邮件列表上找到了关于一些实现改进的邮件.显然,从使用WeakHashMap变为java.lang.Class上的新私有字段,使其更具可伸缩性.
如何集成创建/接收连接,查询数据库以及可能使用Java 7的自动资源管理(try-with-resources语句)处理结果的常用JDBC习惯用法?(教程)
在Java 7之前,通常的模式是这样的:
Connection con = null;
PreparedStatement prep = null;
try{
con = getConnection();
prep = prep.prepareStatement("Update ...");
...
con.commit();
}
catch (SQLException e){
con.rollback();
throw e;
}
finally{
if (prep != null)
prep.close();
if (con != null)
con.close();
}
Run Code Online (Sandbox Code Playgroud)
使用Java 7,您可以选择:
try(Connection con = getConnection(); PreparedStatement prep = con.prepareConnection("Update ..."){
...
con.commit();
}
Run Code Online (Sandbox Code Playgroud)
这将关闭Connection和PreparedStatement,但滚动呢?我无法添加包含回滚的catch子句,因为该连接仅在try块中可用.
你还在try块之外定义连接吗?这里的最佳做法是什么,尤其是在使用连接池的情况下?
我发现PropertyEditorManager每个寄存器/找到编辑器ThreadGroupContext,而不是像Java7之前的每个全局注册表.
而Java7每次都为新的创建一个新的ThreadGroupContext ThreadGroup.因此,PropertyEditorFinder(实际上注册/找到编辑器)又是新的.
Java使用预定义的编辑对于某些类(Byte,Long,等),并在注册他们PropertyEditorFinder的ctor).假设我想PropertyEditor为一些预定义的类(即Long)注册我自己的.在Java6中很容易做到,但在Java7中,每次在new中创建线程时ThreadGroup我都会失去编辑器.
那么请你告诉我有没有任何解决方案可以很好地处理为ThreadGroupJava7中的新创建的编辑器?如果面临一些问题,你如何克服它?
PS我想我应该为我的英语道歉=)
PPS ThreadGroupContext是替代品AppContext.我希望创建上下文的实现类似:都使用ThreadGroup上下文之间的映射(AppContext在java 6中,ThreadGroupContext在java 7中).并且java 6使用与其父对象相同AppContext的新对象ThreadGroup.换句话说AppContext,用于ThreadGroupjvm中的整个树.但不幸的ThreadGroupContext是,创造是不同的 - 它只是一个新群体的新背景.因此,如果有一天ThreadGroupContext使用相同的创建技术,问题会自动解决.
我制作了一个带有jPanel和JLabel数组的调色板.起初它运行良好,但后来我把一些其他的jLabel从JPanel中添加并添加了一些事件.现在我一直收到这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(TimSort.java:747)
at java.util.TimSort.mergeAt(TimSort.java:483)
at java.util.TimSort.mergeCollapse(TimSort.java:410)
at java.util.TimSort.sort(TimSort.java:214)
at java.util.TimSort.sort(TimSort.java:173)
at java.util.Arrays.sort(Arrays.java:659)
at java.util.Collections.sort(Collections.java:217)
at javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(SortingFocusTraversalPolicy.java:136)
at javax.swing.SortingFocusTraversalPolicy.getFocusTraversalCycle(SortingFocusTraversalPolicy.java:110)
at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(SortingFocusTraversalPolicy.java:435)
at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(LayoutFocusTraversalPolicy.java:166)
at javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(SortingFocusTraversalPolicy.java:515)
at java.awt.FocusTraversalPolicy.getInitialComponent(FocusTraversalPolicy.java:169)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:380)
at java.awt.Component.dispatchEventImpl(Component.java:4731)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.SequencedEvent.dispatch(SequencedEvent.java:116)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103) …Run Code Online (Sandbox Code Playgroud) 我习惯com.sun.image.codec.jpeg.JPEGImageEncoder在我的webapp中处理JPEG图像,如图表和其他图像.现在,我正在更新我的机器以使用JDK7,但是这个版本不赞成这个类.以下是我需要更改的代码:
public void processChart(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/jpeg");
out = response.getOutputStream();
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires",0);
try {
int w = Integer.parseInt(request.getParameter("WIDTH"));
int h = Integer.parseInt(request.getParameter("HEIGHT"));
java.awt.image.BufferedImage ChartImage = new java.awt.image.BufferedImage(w,h,java.awt.image.BufferedImage.TYPE_INT_RGB);
java.awt.Graphics2D ChartGraphics = ChartImage.createGraphics();
Chart c = getChart(request);
c.setSize(w,h);
c.paint(ChartGraphics);
// CODE BELOW TO CHANGE...
com.sun.image.codec.jpeg.JPEGImageEncoder encoder =
com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(out);
encoder.encode(ChartImage);
} catch (Exception e) {
e.printStackTrace();
}
}
private Chart getChart(HttpServletRequest request) {
chartLoader loader = new chartLoader(null);
loader.paintDirect = true;
java.util.Enumeration ps …Run Code Online (Sandbox Code Playgroud) 考虑这个尝试实例化某些Lists的Java代码:
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<>();
List<String> list3 = new ArrayList<String>() { };
List<String> list4 = new ArrayList<>() { };
List<String> list5 = new ArrayList<Integer>() { };
Run Code Online (Sandbox Code Playgroud)
list1并且list2很简单; list2在Java 7中使用新的菱形运算符来减少不必要的类型参数重复.
list3是list1使用匿名类的变体,可能会覆盖一些方法ArrayList.
list4尝试使用菱形运算符,类似于list2,但这是一个编译错误,消息'<>'不能与匿名类一起使用.
list5产生一个错误,证明编译器知道实际需要什么类型.错误消息是类型不匹配:无法从新的ArrayList <Integer>(){}转换为List <String>
那么,随着声明list4,为什么钻石运算符不能用于匿名类?这里有一个类似的问题,接受的答案包含JSR-334的以下解释:
不支持使用带有匿名内部类的菱形,因为这样做通常需要扩展类文件签名属性以表示不可表示的类型,事实上的JVM更改.
我需要一些帮助来理解推理.为什么显式类型与相同且明显容易推断的类型需要在生成的类文件中有任何差异?"一般这样做"会涵盖哪些难以处理的用例?
我有一个地图应用程序,可以在给定URL的情况下添加ArcGIS 9.3+基本地图.我想添加的其中一个网址来自客户的网址并受到保护.我的地图应用程序之前使用的是Java 6,并且能够无问题地添加安全URL.我现在升级到Java 7并且正在获得一个
"java.security.cert.CertificateException: Certificates does not conform to algorithm constraints"
Run Code Online (Sandbox Code Playgroud)
例外.起初,我认为情况就是这样,因为在Java 7中,默认情况下,MD2禁用签署SSL证书的算法.您可以在java.security文件中看到:
"jdk.certpath.disabledAlgorithms=MD2"
Run Code Online (Sandbox Code Playgroud)
但是,当我检查该Certification Signature AlgorithmURL时,它说SHA-1.更奇怪的是,如果我"jdk.certpath.disabledAlgorithms=MD2"在java.security文件中注释掉该行,则URL将无问题地工作.是MD2在SSL过程中使用别的地方?我在这里错过了什么吗?