我一直在用Java編寫一個簡單的web服務器,儘管它在Eclipse中工作,但我無法將它導出到jar。我試圖將一些文件與二進制文件一起打包,並且我知道必須使用InputStream從jar中讀取數據,但每次似乎都能正常工作,我可以從chrome中訪問它,並且它說:「空響應」 。這可能意味着該jar無法自我閱讀,所以我決定重新開始,但不知道如何。訪問jar文件裏面的文件
下面是有問題的類代碼:
package handlers;
import java.io.*;
import com.sun.net.httpserver.*;
public final class Greeter implements HttpHandler {
package handlers;
import java.io.*;
import com.sun.net.httpserver.*;
public final class Greeter implements HttpHandler {
static Headers h;
static File file;
static byte [] bytes;
static FileInputStream fis;
static BufferedInputStream bis;
static OutputStream os;
public void handle(HttpExchange t) throws IOException {
h = t.getResponseHeaders();
os = t.getResponseBody();
file = new File("GreetingText.html");
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
bytes = new byte[(int) file.length()];
h.add("Content-Type", "text/html");
bis.read(bytes, 0, bytes.length);
t.sendResponseHeaders(200, file.length());
os.write(bytes, 0, bytes.length);
os.close();
}
}
這不是一個重複,因爲我已經嘗試過其他類似的帖子給出的解決方案。請注意,沒有資源的jar完美地工作,但是,它沒有。
我建議添加一個清單並從類路徑中以資源的形式訪問它們。它們本身不是文件;他們不在文件系統上。 – duffymo
你從那些其他類似的帖子試過了什麼?這已經被回答了很多次,我很難相信它不適合你。相關答案是 http://stackoverflow.com/questions/3369794/how-to-a-read-file-from-jar-in-java, http://stackoverflow.com/questions/2271926/how-to -read-a-file-from-a-jar-file, http://stackoverflow.com/questions/23001856/reading-a-text-file-from-a-jar, 和http:// stackoverflow。 com/questions/9054880/java-how-to-package-and-access-resources-inside-a-runnable-jar-file。 – VGR
沒有閱讀第一個。哎呀。 – ahumblecoder