Hankala oli keksiä otsikkoa. Eli, kuinka missä tahansa sijaitsevan esim. tekstitiedoston saisi avattua Java-ohjelmaan? Tein tuossa c++:lla exen, joka ottaa tiedostonimen parametrinaan ja laitoin open2 käskyn Tiedostotyypit-välilehdeltä avaamaan tämän ohjelman parametrinaan %1 ( = avattavan tiedoston nimi) ja kyllähän tuo tuon jo hyväksyykin, mutta sitten ongelmaksi tuli paikallistaa luokka. Yritin systemillä avata ensin sitä kansiota, missä luokka on, mutta eipä se taida pysyä siellä kansiossa seuraavaan system-käskyyn saakka? Keksin juuri, että voisin tietysti laittaa ohjelman luomaan jokaisella käynnistyskerralla uuden .bat -tiedoston, mutta menisi jo aika säädöksi :). Olisiko tähän jotai muuta järkevää ratkaisua?
EDIT: java.exe ei tykännyt ottaa parametrinaan koko luokan polkua.
RATKAISU: -classpath classinpathi. Arr.
Kysymys 2: Saisikos tätä kirjoitettua rekisteriin jotenkin? (.reg -tiedostolla)
Paras tapa tietenkin on, että annat halutun tekstitiedoston nimen ohjelmalle parametrinä ja sitten ohjelman sisällä luet kyseisen tiedoston sisällön muistiin.
sitten ohjelmaa käytettäis tyyliin
java MyClass tekstifilu.txt
Tietenkin noin minulla onkin ja tokihan se toimii, mutta käyttäjän tarvitsisi osata kirjoittaa komentoriville tuo kyseinen komento. Kysymys olikin, että kuinka saisi asetettua esim. kaikki tekstitiedostot avautumaan automaagisesti ohjelmaani. Löysin jo ensimmäiseen ongelmaan ratkaisun kuten ilmoitin, tarkennusta siihen vielä:
-Luokka lukee käynnistysparametritaulukosta tiedoston polun ja yrittää avata sitä.
-C++:lla tehty .exe ottaa parametrikseen myös tiedoston polun ja käynnistää sitten java.exe:n oikeilla parametreilla
Tajusin juuri, että voisin käyttää java.exeä suoraan, gg minä (noh, teinkin tuon ratkaisun joskus yöllä). Vaan jos niin tekisin, käyttäjä ei voisi valita itse luokan sijaintia kun classpath pitäisi määritellä.
Mutta kuinkas kysymys2? Jos tekisin jonkun setup-ohjelman, käyttäjä voisi antaa asennuspolun sille ja tämä sitten kirjoittaisi tiedot rekisteriin, mitenhän tämmöinen..? Tutkiskelin vähän regeditillä, mutta ei ne ohjelmien nimet tainneet ihan plain textiä olla. Toisaalta voisin tehdä tietysti asennusohjeen, joka olisi minulle paljon käytännöllisempää, näin ehkä sitten :).
En ymmärrä yhtään, mitä yrität tehdä. Auttaisin, jos ymmärtäisin.
Eli siis yrität avata tekstitiedoston Java-ohjelmaan. Haluatko avata jonkun ennalta tiedossa olevan tiedoston, vai antaa käyttäjän määritellä tiedoston? Käytätkö applicationeja (ikkunoitu? konsoliohjelma?) vai appletteja?
Miten ihmeessä joku classpath liittyy?
Mikä sulla oikeastaan on tässä ongelmana? :)
Javassahan on jo valmiina sellainen tiedostonvalintadialogi (JFileChooser), jolla voi näppärästi antaa käyttäjän valita avattavan tiedoston.
tsuriga kirjoitti:
Mutta kuinkas kysymys2? Jos tekisin jonkun setup-ohjelman, käyttäjä voisi antaa asennuspolun sille ja tämä sitten kirjoittaisi tiedot rekisteriin, mitenhän tämmöinen..? Tutkiskelin vähän regeditillä, mutta ei ne ohjelmien nimet tainneet ihan plain textiä olla. Toisaalta voisin tehdä tietysti asennusohjeen, joka olisi minulle paljon käytännöllisempää, näin ehkä sitten :).
Ei mitään rekistereitä kannata käyttää. Menettää Java:n edun eli käyttöjärjestelmä riippumattomuuden. Mitä tuo ohjelma tarkkaan ottaen tekee tekstitiedostolle ?
Ei tässä kyllä nyt enää suurempia ongelmia ole. Yritin siis asettaa Windowsin avaamaan kaikki .txt-päätteiset tiedostot ohjelmaani notepadin sijasta ja kyllähän tuossa onnistuin. Se ohjelma on yksinkertainen tekstieditori, jonka tein kun notepadissa (Huom, win98) ei voinut tallentaa Ctrl+S:llä (ja pari muuta heikkoutta) sekä harjottelin samalla Swingiä. Päädyin siis manuaalin kirjottamiseen jos jonnekin laitan levitykseen tuon ohjelmani.
Swing-sovellus, käyttää JFramea ja ongelmaan ei liity JFileChooser, joka kyllä itse ohjelmasta löytyy :). Classpath liittyy Marja sillä tavalla, että se pitää määritellä java.exelle kun luokkaa ajetaan, koska muuten se ei tiedä luokan sijaintia. Ja tiedosto kun voi sijaita missä vain, niin pelkkä "java myClass tiedostonpolku" ei toimisi.
tsuriga kirjoitti:
Classpath liittyy Marja sillä tavalla, että se pitää määritellä java.exelle kun sitä luokkaa ajetaan, koska muuten se ei tiedä luokan sijaintia.
Hoo, en tiennytkään ;) No, ei tosissaan. Siis tarkoitinkin, että miten se liittyy tekstitiedostojen availuihin. Vai oliko tässä jotenkin useampi kysymys.. No joo, ihan sama. Huomattavasti selkeytti, kun kerroit, mitä olet tekemässä. Eli siis ongelmana saada Windows käynnistämään tekstieditori ja vielä niin, että samalla avautuisi määritelty tiedoston. Mutta tärkeintä, että nyt toimii.
tsuriga kirjoitti:
Classpath liittyy Marja sillä tavalla, että se pitää määritellä java.exelle kun luokkaa ajetaan, koska muuten se ei tiedä luokan sijaintia. Ja tiedosto kun voi sijaita missä vain, niin pelkkä "java myClass tiedostonpolku" ei toimisi.
Jos CLASSPATH ympäristömuuttujaa ei ole määritelty ja komentoriviltä ei erikseen määritellä classpath:a käytetään classpath:na current dirriä.
Mutta kun minulla on määritelty Tomcattia varten. Mutta, enpäs tiennytkään ja tuskin normaaleilla käyttäjillä on sitä määritelty.
Aihe on jo aika vanha, joten et voi enää vastata siihen.