我有一个小型图像处理应用程序,它使用SwingWorker一次完成多项任务.但是,如果我运行以下代码(过度简化的摘录),它只挂在JDK 7 b70(Windows)上,但在6u16中工作.它在另一个工作者中启动一个新工作者并等待其结果(真正的应用程序运行多个子工作者并等待所有这些方式).我是否在这里使用了一些错误的模式(因为在swingworker-pool中大多有3-5名工人,我认为其限制为10)?
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
public class Swing {
static SwingWorker<String, Void> getWorker2() {
return new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
return "Hello World";
}
};
}
static void runWorker() {
SwingWorker<String, Void> worker
= new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
SwingWorker<String, Void> sw2 = getWorker2();
sw2.execute();
return sw2.get();
}
};
worker.execute();
try {
System.out.println(worker.get());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种从引导类路径覆盖类的简洁方法rt.jar.原因是OpenJDK7错误http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7104625
修复此错误是一个微不足道的(请参阅链接的邮件列表帖子)更改为sun.awt.X11.XComponentPeer.所以我想知道是否有一种简单的方法可以在我的类路径上覆盖这个受影响的类,而不必重新打包/重建rt.jar(因此修复不会在下一次自动更新OpenJDK时丢失).
理想情况下,它也会影响Eclipse ......
我认为这java -Djava.system.class.loader=myClassLoader会奏效吗?有没有其他方法可以使用这样的"修补程序"覆盖单个类?(注意:在我自己的代码中没有使用,但在Java AWT代码中很深)
在Eclipse中创建了一个新的标准java 7项目,并成功地设法获得了javax.xml.ws.Service类似的实例:
String wsdlURL = "http://example.com:3000/v1_0/foo/bar/SomeService?wsdl";
String namespace = "http://foo.bar.com/webservice";
String serviceName = "SomeService";
QName serviceQN = new QName(namespace, serviceName);
Service service = Service.create(new URL(wsdlURL), serviceQN);
Run Code Online (Sandbox Code Playgroud)
这在主方法中运行良好,所以据我所知,该部分有效.但我无法弄清楚如何实际使用它.在SoapUI中,我使用如下所示的请求调用此相同的服务:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://foo.bar.com/webservice">
<soapenv:Header/>
<soapenv:Body>
<web:SomeWebServiceRequest acAccountName="name" acAccountPassword="password">
<SomeRequest>
<id>012345678901234</id>
<action>Fix</action>
</SomeRequest>
</web:SomeWebServiceRequest>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
如何在Java中执行相同的请求?我的目标是我有很长的列表id,我需要为每个人运行这样的请求.在SoapUI中手动执行它有点烦人,因此我想使用简单的Java控制台应用程序自动执行它.
我在我的mac上运行Java 7:
System.out.println(System.getProperty("java.version")); // prints 1.7.0_05
Run Code Online (Sandbox Code Playgroud)
项目是使用创建的

项目属性确认,我在Java 7上

默认系统Java是7

但是,以下结果会导致语法错误
public static void main(String[] args) {
// Underscores in Numeric Litarals are ok here
int i = 11_234;
}
Run Code Online (Sandbox Code Playgroud)
Eclipse抱怨着 Syntax error on token "_234", delete this token
为什么非验证的DocumentBuilder在SSCCE下面尝试读取DTD文件?
public class FooMain {
private static String XML_INSTANCE = "<?xml version=\"1.0\"?> "+
"<!DOCTYPE note SYSTEM \"does-not-exist.dtd\"> "+
"<a/> ";
public static void main(String args[]) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
DocumentBuilder builder = factory.newDocumentBuilder();
InputStream is = new ByteArrayInputStream(XML_INSTANCE.getBytes("UTF-8"));
Document doc = builder.parse(is);
}
}
Run Code Online (Sandbox Code Playgroud)
代码爆炸:
[java] Exception in thread "main" java.io.FileNotFoundException: /lhome/minimal-for-SO/does-not-exist.dtd (No such file or directory)
[java] at java.io.FileInputStream.open(Native Method)
[java] at java.io.FileInputStream.<init>(FileInputStream.java:146)
[java] at java.io.FileInputStream.<init>(FileInputStream.java:101)
[java] at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
[java] …Run Code Online (Sandbox Code Playgroud) 我发现Java 1.7_51和Java 1.8_20之间存在一些困难.
最初的情况:
一个界面:
interface InterfaceA {
public void doSomething();
}
Run Code Online (Sandbox Code Playgroud)
两个班:
public class ClassA implements InterfaceA {
public void doSomething() {
System.out.println("Hello World!");
}
}
public class ClassB {
public static void main(String[] args) {
ClassA a = new ClassA();
a.doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
接下来我在编译完成后用(Java 1.8) - > javac*.java编译了类,我删除了InterfaceA.java和InterfaceA.class文件.现在我再次尝试编译只有ClassB.java并收到错误消息:
ClassB.java:4:错误:无法访问InterfaceA a.doSomething();
找不到InterfaceA的类文件1错误
我尝试使用java 1.7 .. - > javac*.java编译完成后我删除了InterfaceA.java和InterfaceA.class文件.但知道我没有错误信息..
有人可以解释一下吗?
.. 对不起,我的英语不好 ..
几天前,当我打开电脑时,我尝试启动tomcat,并且自从我处理软件开发以来第一次出人意料.
确切的错误消息是:
Using CATALINA_BASE: "C:\apache-tomcat-8.0.9"
Using CATALINA_HOME: "C:\apache-tomcat-8.0.9"
Using CATALINA_TMPDIR: "C:\apache-tomcat-8.0.9\temp"
Using JRE_HOME: "C:\Program Files\Java\jdk1.8.0_45"
Using CLASSPATH: "C:\apache-tomcat-8.0.9\bin\bootstrap.jar;C:\apache-tomcat-8.0.9\bin\tomcat-juli.jar"
Error occurred during initialization of VM
Could not find agent library D:\Program in absolute path, with error: Can't find dependent libraries
Run Code Online (Sandbox Code Playgroud)
而且我无法理解它,也没有在谷歌中找到任何关于此的信息,尝试使用3种不同版本的tomcat 7.0.8,8.0.5,8.0.9,所有情况都是一样的.当我看到这个时,我认为JDK已经过时,因为我有几个版本,然后我从PC中删除了所有JDK和JRE,只安装了最后一个8u45,但没有任何运气.有人能指出我正确的方向吗?
输出用 echo
Using CATALINA_BASE: "C:\Users\Denees\AppData\Roaming\NetBeans\8.0.1\apache-tomcat-8.0.15.0_base"
Using CATALINA_HOME: "C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.15"
Using CATALINA_TMPDIR: "C:\Users\Denees\AppData\Roaming\NetBeans\8.0.1\apache-tomcat-8.0.15.0_base\temp"
Using JRE_HOME: "C:\Java\jdk1.8.0_45"
Using CLASSPATH: "C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.15\bin\bootstrap.jar;C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.15\bin\tomcat-juli.jar"
"C:\Java\jdk1.8.0_45\bin\java.exe" -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1024m -Dhttp.nonProxyHosts="localhost|127.0.0.1|Denees" -Drebel.env.ide.plugin.version=6.2.0.1 …Run Code Online (Sandbox Code Playgroud) 我的意思是这个库:http://sourceforge.net/projects/streamsupport/
它意味着与Java8 Streams兼容,所以我尝试从Java8文档运行一些示例,如下所示:
IntStream.range(1, 4).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
但是.range没有在任何地方定义.从该库文档:
streamsupport是Java 8 java.util.function(功能接口)和java.util.stream(streams)API的后端端口,用于Java 6或7的用户,并补充了java.util.concurrent中选定的附加内容,这些附加内容不存在在Java 6中.
但是: - 我找不到任何一个示例如何使用该反向移植的库 - 正如您所看到的,我也无法使用Java8中最简单的场景.
任何人都可以举例说明如何使用backported StreamSupport或一些文档链接?
[编辑]
import java8.util.function.Consumer;
IntStreams.range(1, 4).forEach(new Consumer<Integer>(){
public void accept(Integer next){
System.out.println(next);
}
});
Run Code Online (Sandbox Code Playgroud)
错误信息:
错误:(126,35)错误:接口IntStream中的forEach方法无法应用于给定类型; 需要:IntConsumer发现:>原因:实际参数>无法通过方法调用转换转换为IntConsumer
如果我将Consumer更改为IntConsumer:
错误:(127,59)错误:类型IntConsumer不接受参数
我们在linux机器上使用WL 11g和jdk1.7更新121.
我们在Web服务调用期间看到下面的错误到另一个weblogic机器.有什么想法吗
2017-02-14 18:23:20,777 [system] [DEBUG] [rule] UserProvisioningServiceUtility.log - tcContactPK:: 0
2017-02-14 18:23:20,777 [system] [DEBUG] [rule] UserProvisioningServiceUtility.log - replacing created by with actual pk
2017-02-14 18:23:20,778 [system] [DEBUG] [rule] UserProvisioningServiceUtility.log - hostname : uatapp.corp.com
2017-02-14 18:23:20,778 [system] [DEBUG] [rule] UserProvisioningServiceUtility.log - port : 7004
2017-02-14 18:23:20,778 [system] [DEBUG] [rule] UserProvisioningServiceUtility.log - scheme : https
2017-02-14 18:23:20,779 [system] [DEBUG] [rule] UserProvisioningServiceUtility.log - Invoking Webservice with url: https://uatapp.corp.com:7004/api/jsonws/lgs-services-portlet.ipeuserprovisionws/I-pe-create-use-email/user-email-id/a%40b.c/first-name/DAVID/middle-name/J./last-name/SEPANIK/dspersonid/12568/action/Add/new-roles/External_OC_Portal/createdby-userid/4003/user-company-pk/19685
2017-02-14 18:23:21,065 [system] [DEBUG] [rule] UserProvisioningServiceUtility.log - IOException : javax.net.ssl.SSLException: java.lang.RuntimeException: Could not …Run Code Online (Sandbox Code Playgroud) 我正在使用Java 1.7。
尝试转换:
2018-05-23T23:18:31.000Z
Run Code Online (Sandbox Code Playgroud)
进入
2018-05-23 23:18:31
Run Code Online (Sandbox Code Playgroud)
DateUtils类:
public class DateUtils {
public static String convertToNewFormat(String dateStr) throws ParseException {
TimeZone utc = TimeZone.getTimeZone("UTC");
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
sdf.setTimeZone(utc);
Date convertedDate = sdf.parse(dateStr);
return convertedDate.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
尝试使用它时:
String convertedDate = DateUtils.convertToNewFormat("2018-05-23T23:18:31.000Z");
System.out.println(convertedDate);
Run Code Online (Sandbox Code Playgroud)
得到以下异常:
Exception in thread "main" java.text.ParseException: Unparseable date: "2018-05-23T23:22:16.000Z"
at java.text.DateFormat.parse(DateFormat.java:366)
at com.myapp.utils.DateUtils.convertToNewFormat(DateUtils.java:7)
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?
有没有更简单的方法(例如Apache Commons lib)?
java-7 ×10
java ×8
java-8 ×2
android ×1
classloader ×1
dtd ×1
linux ×1
soap ×1
swing ×1
swingworker ×1
tomcat ×1
utc ×1
web-services ×1
weblogic11g ×1
xml ×1