24. april 2003 - 12:17
Der er
17 kommentarer og 2 løsninger
IOException - fejlkoder
Hvor kan jeg finde en oversigt over fejlkoder vedr. IOException Eks. CreateProcess: C:/Data/J5/SkatteBrgTester/Output/Virk.pdf error=193
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
24. april 2003 - 12:19
#1
Det lyder mere som en Windows fejl. Fejlkoden er defineret således: #define ERROR_BAD_EXE_FORMAT 193L Altså, en pdf fil er ikke en exe fil.
24. april 2003 - 12:21
#2
Måske du skal gøre noget ala dette: String filnavn = "C:\\Data\\J5\\SkatteBrgTester\\Output\\Virk.pdf"; Runtime.getRuntime().exec("cmd.exe /c " + "\"" + filnavn + "\"" );
24. april 2003 - 12:22
#3
Men det vil sansynligvis kun virke på winnt/2k/xp
24. april 2003 - 12:22
#4
Det lyder som en: Runtime.getRuntime().exec("et eller andet"); hvor "et eller andet" ikke er korrekt. F.eks. en PDF fil ude at der er tilknyttet en default applikation til PDF.
24. april 2003 - 12:23
#5
Hvis der ikke er en default applikation skal du enten have tilknyttet sådan en - eller eksplicit angive programmet filen skal åbnes med.
24. april 2003 - 12:25
#6
Mit problem er at mit applikation skal skal starte Acrobat Reader, som en pdf-fil er associaceret til, men det kan kun lade sig gøre hvis jeg skrive følgende linie p = Runtime.getRuntime().exec("C:/Program Files/Adobe/Acrobat 5.0/Reader/AcroRd32.exe C:/Data/J5/SkatteBrgTester/Output/Virk.pdf"); Hvis jeg derimod skriver p = Runtime.getRuntime().exec("C:/Data/J5/SkatteBrgTester/Output/Virk.pdf"); opstår fejlen. Det er jo ikke holdbart at man skal angive stien til readeren
24. april 2003 - 12:26
#7
Hvis jeg skulle bygge videre på sørens eksempel: String filnavn = "C:\\Data\\J5\\SkatteBrgTester\\Output\\Virk.pdf"; Runtime.getRuntime().exec("\"C:\\Program Files\\Adobe\\Acrobat 4.0\\Reader\\AcroRd32.exe\"" + "\"" + filnavn + "\"" );
24. april 2003 - 12:27
#8
Hov. Du må ikke bruge / i exec på Windows. Prøved med \ (altså \\) !
24. april 2003 - 12:28
#9
Altså: p = Runtime.getRuntime().exec("C:\\Data\\J5\\SkatteBrgTester\\Output\\Virk.pdf");
24. april 2003 - 12:29
#10
Jeg vil gerne undgå at skulle angive en explicit sti til readeren
24. april 2003 - 12:30
#11
Forklaring: Java IO konverterer selv fra / til \ iden den kalder Windows, men exec bliver sendt direkte til Windows og Windows forstår ikke /.
24. april 2003 - 12:35
#12
Det gør ingen forskel. Jeg må finde en måde at lokaliseres readeren på så
24. april 2003 - 12:37
#13
arne: det dur ikke (12:28:20). Windows forventer at skulle eksekvere en eksekverbar fil - det er en .pdf ikke. Derfor skal det ske via cmd.exe i win2k/xp (og sikkert også nt) import java.io.*; import java.util.*; public class Main { public static void main(String[] args) { try { String pdf = "test.pdf"; Runtime.getRuntime().exec("cmd.exe /c \"" + pdf + "\""); } catch(Exception e) { e.printStackTrace(); } } }
24. april 2003 - 12:38
#14
I win9x skal man muligvis gøre sådan: Runtime.getRuntime().exec("command.com /c \"" + pdf + "\""); (har ingen test mulighed)
24. april 2003 - 12:41
#15
Alternativet kunne være at distribuere dit program med en execute.exe fil som f.eks. kunne se sådan ud (c++): #include <windows.h> int main(int argc, char **argv) { if(argc>1) { for(int i=1;i<argc;i++) { ShellExecute(NULL, "open", argv[i], NULL, NULL, SW_NORMAL); } } return 0; } Så vil det virke på både win9x og 2k/xp Runtime.getRuntime().exec("execute.exe \"" + pdf + "\"");
24. april 2003 - 12:43
#16
En anden løsning kunne være at forgrene din kode på baggrund af: String retval = System.getProperty("os.name");
24. april 2003 - 13:10
#17
Søren har ret. cmd.exe /c command.exe /c ser ud til at være det der skal til.
24. april 2003 - 13:17
#18
Men det kræver naturligvis stadigvæk at der er en applikation tilknyttet PDF. Og det er absolut anbefalelsesværdigtat bruge \ i.s.f. /, da / ikke virker med alle Win32 applikationer.
24. april 2003 - 13:37
#19
Tak skal i ha'. I får halvdelen af points'ne hver
Kurser inden for grundlæggende programmering