Tag: java

Java无法访问的catch块编译器错误

为什么在Java中我们可以捕获一个Exception即使它没有被抛出,但是我们不能捕获它的子类(除了“unchecked”的RuntimeException和它的子类之外)。 示例代码: class Test { public static void main(String[] args) { try { // do nothing } catch (Exception e) { // OK } try { // do nothing } catch (IOException e) { // COMPILER ERROR: Unreachable catch block for IOException. //This exception is never thrown from the try statement body } } } […]

Eclipse:JVM终止。 退出代码= 2

我最近决定开始尝试Android应用程序开发,所以我下载了用于Windows的Java SE开发工具包8(x86)(我得到了Windows 8 64位,但我的指南build议获得32位),Android SDK和Eclipse IDE Java开发人员(x86)。 但是,我的Eclipse不会启动时,我双击eclipse.exe! 相反,我收到以下错误消息: 我尝试在我的环境variables中添加Java到我的Pathvariables中,正如在我查阅的一些解决scheme中所build议的,但是它仍然无法正常启动。 任何人都知道我还能尝试什么? 另外,如果可能的话,请不要使用超级技术词汇,因为我是新来的这些东西,不会理解你…谢谢哈哈:D

写入Java进程的InputStream

我有一个代码,通过启动一个Java过程(即:执行一个编译的Java代码) ProcessBuilder builder = new ProcessBuilder("java", "Sample", "arg1", "arg2"); builder.redirectErrorStream(true); Process process = builder.start(); 通过这个,我基本上可以处理输出和错误 OutputStream stdin = process.getOutputStream(); // <- Eh? InputStream stdout = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stdout)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin)); // reader.readLine() blah blah 现在,我怎样才能发送input到stdin ? 也就是说,如果进程执行的代码有一个等待input的行,如下所示: Scanner scan = new Scanner(System.in); String val = scan.nextLine(); System.out.println(val); […]

什么是“不完整的对象”?

Goetz的“ Java并发实践 ”第41页提到了this参考在构build过程中如何逃脱。 一个“不要这样做”的例子: public class ThisEscape { public ThisEscape(EventSource source) { source.registerListener( new EventListener() { public void onEvent(Event e) { doSomething(e); } }); } } this是通过doSomething(e)引用封闭的ThisEscape实例的事实“逃避”的。 情况可以通过使用静态工厂方法(首先构造普通对象,然后注册侦听器)而不是公共构造函数(完成所有工作)来解决。 这本书继续: 从其构造函数中发布一个对象可以发布一个不完整构造的对象。 即使发布是构造函数中的最后一个语句,也是如此。 如果this参考文件在施工过程中逃脱了,那么该对象被认为没有正确的构造。 我不太明白 如果出版物是构造函数中的最后一个声明,那么在此之前并没有完成所有的构build工作? 那么这到底是不是有效? 显然有一些巫术之后,但什么?

Java中的迭代笛卡尔积

我想计算Java中任意数量的非空集的笛卡尔乘积。 我已经写了迭代代码… public static <T> List<Set<T>> cartesianProduct(List<Set<T>> list) { List<Iterator<T>> iterators = new ArrayList<Iterator<T>>(list.size()); List<T> elements = new ArrayList<T>(list.size()); List<Set<T>> toRet = new ArrayList<Set<T>>(); for (int i = 0; i < list.size(); i++) { iterators.add(list.get(i).iterator()); elements.add(iterators.get(i).next()); } for (int j = 1; j >= 0;) { toRet.add(Sets.newHashSet(elements)); for (j = iterators.size()-1; j >= 0 && […]

为什么这个Java Stream运行两次?

Java 8 API说: 直到stream水线的terminal操作被执行,才开始stream水线源的穿越。 那么为什么下面的代码抛出: java.lang.IllegalStateException:stream已经被操作或closures Stream<Integer> stream = Stream.of(1,2,3); stream.filter( x-> x>1 ); stream.filter( x-> x>2 ).forEach(System.out::print); 根据API的第一个过滤操作不应该在Stream上操作。

解决错误javax.mail.AuthenticationFailedException

我不熟悉这个函数在java中发送邮件。 发送电子邮件重置密码时出现错误。 希望你能给我一个解决scheme。 以下是我的代码: public synchronized static boolean sendMailAdvance(String emailTo, String subject, String body) { String host = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-ADDRESS"); String userName = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-USERNAME"); String password = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-PASSWORD"); String port = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-PORT"); String starttls = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-STARTTLS"); String socketFactoryClass = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-SOCKET-CLASS"); String fallback = AppConfigManager.getProperty("SENDER-EMAIL-SMTP-ALLOW-FALLBACK"); try { java.util.Properties props = null; props = System.getProperties(); props.put("mail.smtp.user", userName); props.put("mail.smtp.host", […]

写入文件的string不保留换行符

我想写一个String (冗长,但包装),这是从JTextArea 。 当string打印到控制台时,格式与Text Area格式相同,但是当我使用BufferedWriter将它们写入文件时,它将以单行forms写入该String 。 以下代码可以重现它: public class BufferedWriterTest { public static void main(String[] args) throws IOException { String string = "This is lengthy string that contains many words. So\nI am wrapping it."; System.out.println(string); File file = new File("C:/Users/User/Desktop/text.txt"); FileWriter fileWriter = new FileWriter(file); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write(string); bufferedWriter.close(); } } 什么地方出了错? […]

java.lang.NoClassDefFoundError:com.google.ads.AdView

我试图将admob广告合并到我的应用程序中。 到目前为止,我已经在我的应用程序的主要活动的onCreate方法中添加了以下代码… adView = new AdView(this,AdSize.BANNER,"my code number"); adView.loadAd(new AdRequest()); 该程序编译没有错误,但在运行时,我得到消息java.lang.NoClassDefFoundError: com.google.ads.AdView 。 我已经看到了这个问题的解释和治愈,但是我不明白它是如何适用于我的项目,因为我的项目中没有“lib”或“libs”目录。 据eclipse的SDK经理介绍,我使用的是最新的版本。

行家。 lambdaexpression式在-source 1.5中不受支持

我使用maven来构build我的项目。 我有以下configuration: D:\ freelance \ polyndrom> mvn -verion Apache Maven 3.2.3(33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T00:58:1 0 + 04:00)Maven home:C:\ Program Files \ apache \ apache-maven-3.2。 3 Java版本:1.8.0_25,供应商:Oracle公司Java家庭版:C:\ Program Files \ Java \ jdk1.8.0_25 \ jre默认语言环境:ru_RU,平台编码:Cp1251操作系统名称:“windows 7”,版本:“6.1 “,arch:”amd64“,family:”dos“ 但是当我编译项目,我看到以下错误: lambda expressions are not supported in -source 1.5 我很困惑 – 姆文看到我使用Java 8。 pom.xml中: <?xml version="1.0" encoding="UTF-8"?> <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 […]