我已经将我的应用程序部署到jar文件。 当我需要将数据从一个资源文件复制到jar文件之外时,我执行下面的代码: URL resourceUrl = getClass().getResource("/resource/data.sav"); File src = new File(resourceUrl.toURI()); //ERROR HERE File dst = new File(CurrentPath()+"data.sav"); //CurrentPath: path of jar file don't include jar file name FileInputStream in = new FileInputStream(src); FileOutputStream out = new FileOutputStream(dst); // some excute code here 我遇到的错误是: URI is not hierarchical 。 在IDE中运行时遇到此错误。 如果我改变上面的代码作为一些帮助在StackOverFlow上的其他职位: InputStream in = Model.class.getClassLoader().getResourceAsStream("/resource/data.sav"); […]
我知道在try / catch / finally块中返回的头痛 – 即使try或catch块中的返回应该是执行的,finally中的返回总是返回方法的情况。 但是,是否也适用于System.exit()? 例如,如果我有一个try块: try { //Code System.exit(0) } catch (Exception ex) { //Log the exception } finally { System.exit(1) } 如果没有例外,哪个System.exit()将被调用? 如果出口是一个返回语句,那么System.exit(1)将始终(?)被调用。 但是,我不确定退出的行为是否与退货不同。 代码是在一个极端的情况下,即使不是不可能重现,也是非常困难的,所以我不能写一个unit testing。 我今天晚些时候会试着做一个实验,如果我有几分钟的空闲时间,但是我还是很好奇的,也许有人会知道答案,可以在之前提供,或者我无法运行实验。
我正在使用gson将jsonstring转换为Java对象。 result2的值与result1的值完全相同。 (从debugging器复制;添加了反斜杠) 转换result1时将引发以下exception: com.google.gson.JsonSyntaxException:com.google.gson.stream.MalformedJsonException:第1行中的预期EOF列170 转换result2工作正常。 jsonstring根据jsonlint.com是有效的。 public static Userinfo getUserinfo() { String result1 = http.POST("https://www.bitstamp.net/api/balance/", postdata, true); String result2 = "{\"btc_reserved\": \"0\", \"fee\": \"0.5000\", \"btc_available\": \"0.10000000\", \"usd_reserved\": \"0\", \"btc_balance\": \"0.10000000\", \"usd_balance\": \"30.00\", \"usd_available\": \"30.00\"}"; Gson gson = new Gson(); Userinfo userinfo1 = gson.fromJson(result1, Userinfo.class); //throws Exception Userinfo userinfo2 = gson.fromJson(result2, Userinfo.class); //works fine return […]
有没有一个本地的方式(最好不执行自己的方法)来检查一个string是可以用Double.parseDouble()parsing?
我正在使用JDK 1.7,Apache Tomcat 7.0.23,并且我已经将JSTL核心库(1.2)和STANDARD jar放在WEB_INF lib文件夹中,它不给我任何警告,但是当我尝试运行代码 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!– Create Bean Instance–> <jsp:useBean id="listdomain" class="bean.PopulateMultiDomain" scope="session"></jsp:useBean> <jsp:setProperty property="*" name="listdomain"/> <c:forEach var="item" items="${listdomain.status}"> <option> <c:out value="${item}" /> </option> </c:forEach> 它给了我以下错误: org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files […]
UTF-8是Java中的默认编码吗? 如果不是,我怎么知道默认使用哪种编码?
我正在尝试优化比较列表元素的一段代码。 例如。 public void compare(Set<Record> firstSet, Set<Record> secondSet){ for(Record firstRecord : firstSet){ for(Record secondRecord : secondSet){ // comparing logic } } } 请注意套内的logging数量会很高。 谢谢 谢卡尔
我不熟悉Java和Android开发,并尝试创build一个简单的应用程序,它应该联系一个Web服务器,并使用http get将一些数据添加到数据库。 当我在电脑上使用networking浏览器进行通话时,它工作得很好。 但是,当我在Android模拟器上执行应用程序的调用时,不会添加任何数据。 我已经将Internet权限添加到应用的清单中。 Logcat不报告任何问题。 任何人都可以帮我弄清楚什么是错的? 这里是源代码: package com.example.httptest; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class HttpTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); setContentView(tv); try { URL url = new URL("http://www.mysite.se/index.asp?data=99"); HttpURLConnection urlConnection = […]
我试图理解PrintWriter是一个我正在做的小程序,而我似乎无法让java创build这个文件,然后写上它。 当我执行下面的程序时,它会在第9行中给我一个Filenotfoundexeption错误。它也不能使我指定的目录中的文件。 我是新来的,所以请尽量保持答案简单。 我正在使用Eclipse。 import java.io.PrintWriter; import java.io.File; public class Testing { public static void main(String[] args) { File file = new File ("C:/Users/Me/Desktop/directory/file.txt"); PrintWriter printWriter = new PrintWriter ("file.txt"); printWriter.println ("hello"); printWriter.close (); } }
当我实现一个接口的方法时,Eclipse正在添加@Override注释。 Eclipse似乎没有这个问题。 而Cruise Control的自动化构build过程似乎没有问题。 但是,当我从命令行构build,运行javac的ant,我得到这个错误: [javac] C:\path\project\src\com\us\MyClass.java:70: method does not override a method from its superclass [javac] @Override [javac] ^ [javac] 1 error Eclipse在Java 1.6下运行。 Cruise Control正在运行Java 1.5。 无论我使用哪个版本的Java,我的ant构build都会失败。