我期望能发现XMLStreamReader是AutoCloseable在Java 7中.然而,事实并非如此.是否存在技术原因导致StAX读取器/写入器接口未被(或不应该)改进以实现AutoCloseable?他们已经有了密切的方法,其意图与密切方法没有区别AutoCloseable.
我使用JAX-WS作为客户端.我曾经使用以下系统属性来记录所有HTTP请求和响应以进行调试:
com.sun.xml.ws.transport.local.HTTPTransportPipe.dump=true
Run Code Online (Sandbox Code Playgroud)
但是,由于升级到Java 1.7并使用内置的JAX-WS(而不是外部库),此功能已停止工作.
我已经做了很多搜索,以找到1.7中的等效物但是没有运气.有人知道如何记录输出吗?
谢谢你的帮助
我创建了两个java文件:Pizza.Java和PizzaOrder.Java.
我尝试在命令提示符下使用javac编译我的代码,如下所示:
javac pizzaorder.java
Run Code Online (Sandbox Code Playgroud)
我得到访问被拒绝错误:
C:\Users\Meutex>cd\
C:\>cd "Program Files\Java\jdk1.7.0\bin"
C:\Program Files\Java\jdk1.7.0\bin>javac PizzaOrder.java
PizzaOrder.java:23: error: cannot find symbol
Pizza order = new Pizza ();
^
symbol: class Pizza
location: class PizzaOrder
PizzaOrder.java:23: error: cannot find symbol
Pizza order = new Pizza ();
^
symbol: class Pizza
location: class PizzaOrder
2 errors
C:\Program Files\Java\jdk1.7.0\bin>javac Pizza.java
Pizza.java:11: error: error while writing Pizza: Pizza.class (Access is denied)
public class Pizza {
^
1 error
C:\Program Files\Java\jdk1.7.0\bin>javac Pizza.java
Run Code Online (Sandbox Code Playgroud)
我在做什么导致这个错误?
我到目前为止使用以下代码在Apple MacBook上设置应用程序名称(在"系统"菜单栏的顶部).(实际上,我认为我是从stackoverflow复制的.)
基本上,有一个单独的AppLauncher类,它在为应用程序本身创建一个新的Runnable之前使用System.setProperty()来设置应用程序名称.
工作得很好.
但是,由于我下载并开始使用JDK 1.7,解决方案停止工作 - 我在菜单中获得了Class Name而不是App Name,就像我找到解决方案之前一样.我试着谷歌搜索它,但无济于事.
以下是过去在JDK 1.6下工作的失效代码,简化为相关部分:
public class AppLauncher {
public static void main(String[] args) {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name",
"My Application");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MainWindow();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的建议!
ETA:使用java -Dapple.laf.useScreenMenuBar = true调用仍然有效.将属性设置为Info.plist可能会有效,但我还没有尝试过.
我正在尝试使用OpenJDK7针对OSGi规范4.3编译我的OSGi包但我收到错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5:compile (default-compile) on project example: Compilation failure
[ERROR] /tmp/baka/example/src/main/java/org/example/Activator.java:[14,24] error: type ServiceReference does not take parameters
Run Code Online (Sandbox Code Playgroud)
这是我的Activator.java:
package org.example;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
public class Activator implements BundleActivator {
@Override
public void start(BundleContext bundleContext) throws Exception {
ServiceReference<Runnable> ref = bundleContext.getServiceReference(Runnable.class);
}
@Override
public void stop(BundleContext bundleContext) throws Exception {
}
}
Run Code Online (Sandbox Code Playgroud)
和我的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>example</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId> …Run Code Online (Sandbox Code Playgroud) 我使用Oracle JDK 7,当我构建项目时,我收到了以下消息:
missing type arguments for generic class Class<T> where T is a type-variable:
T extends Object declared in class Class
Run Code Online (Sandbox Code Playgroud)
这是班级:
public class Among {
private static final Class<?>[] EMPTY_PARAMS = new Class[0]; //warning line
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决它.它在很多地方使用,我有很多警告.
如何使用方法句柄调用私有方法?
据我所知,只有两种可公开访问的Lookup实例:
MethodHandles.lookup()MethodHandles.publicLookup()并且都不允许不受限制的私人访问.
有非公众Lookup.IMPL_LOOKUP做我想做的事.是否有一些公共方法来获取它(假设SecurityManager允许它)?
我最近注意到,自从我更新到Java 7以来,我的代码的特定部分运行速度明显变慢.令人惊讶的是,Java 7的全局速度比Java 6快.
该程序非常庞大,但我成功地提取了一个可重现的代码来演示java 7如何比Java 6慢.
如果您使用Java 6和Java 7运行完全相同的代码,您会发现Java 7比Java 6慢大约7-8倍!
这是代码(不要试图理解它的作用,它只是来自真实代码的摘要,因此并没有真正意义).它基本上是一个解析字符串以格式化其中某些部分的代码:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
public class CPerfJava7 extends JFrame {
private static final long serialVersionUID = 1L;
// +==============================================================+
// | Attributes |
// +==============================================================+
JPanel mainPanel;
public CPseudoHtmlDocument docu;
private static long totalTime = …Run Code Online (Sandbox Code Playgroud) 我在Windows 7 64位计算机上运行一个用swing制作的图形化Java应用程序.
我的应用程序是一个可运行的jar文件,我使用以下命令从命令提示符启动:
C:\path\to\jre\java.exe -jar myProg.jar
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我使用JRE8 32位而不使用JRE7 32位或JRE8 64位时,我遇到了巨大的性能问题.
请注意,应用程序使用相同的jar文件运行; 唯一的区别是它是由不同的JRE运行的.
我尝试了不同的JRE8版本,问题仍然存在......
当我使用"-verbose"参数比较两个输出时,我看到我获得了超过1500个带有文本的输出:'[来自共享对象文件的加载xxxxxx]'用于JRE7而我没有得到JRE8.
梅比可能会以某种方式联系起来?
有谁知道问题可能是什么?
以下是JRE7的一些输出
[Loaded MainFrame.MainFrame$XtrFileFilter from rsrc:./]
[Loaded java.awt.event.HierarchyListener from shared objects file]
[Loaded java.lang.InterruptedException from shared objects file]
[Loaded java.io.FileWriter from shared objects file]
[Loaded javax.swing.CellEditor from shared objects file]
[Loaded javax.swing.table.TableCellEditor from shared objects file]
[Loaded java.awt.image.RenderedImage from shared objects file]
[Loaded java.awt.image.WritableRenderedImage from shared objects file]
[Loaded java.awt.image.BufferedImage from shared objects file]
[Loaded sun.awt.util.IdentityArrayList from c:\Program Files (x86)\Java\jdk1.7.0_45\jre\lib\rt.jar]
[Loaded java.awt.Window$Type from c:\Program …Run Code Online (Sandbox Code Playgroud) 类似于这个问题IntelliJ,"所选目录不是JDK的主页",我收到一个错误,我的JDK目录突然无效.
即使我的JDK目录看起来很好,上次我加载了IntelliJ
所以我选择了一个有效的JDK目录但仍然出现了这个错误.
什么可能导致这个?什么能解决这个问题?
java ×10
java-7 ×10
swing ×2
generics ×1
ide ×1
intellij-15 ×1
jar ×1
java-6 ×1
java-8 ×1
jax-ws ×1
macos ×1
methodhandle ×1
openjdk ×1
osgi ×1
osx-lion ×1
performance ×1
reflection ×1
startup ×1
stax ×1
windows ×1