Avatar billede mtilsted Nybegynder
01. august 2000 - 21:08 Der er 6 kommentarer

Betinget compilering.

Er det muligt at lave betinget compilering baseret paa versions nummeret af den brugte java compiler, saaledes at man kan have et program hvor nogle funktioner ikke bliver compilet med, fordi det kræver java 1.2 mens compileren er 1.1.8.
Jeg skal bruge det, da jeg skal lave et program der skal køre baade under 1.1.8 og 1.2.0 og der er nogle features i 1.2.0 jeg gerne vil bruge. Det er saa meningen at disse features ikke skal med i 1.1.8 versionen.


Avatar billede bearhugx Nybegynder
02. august 2000 - 00:26 #1
Da Java ikke arbejder med kompiler-direktiver ( i modsætning til f.eks. c/++ ) mener jeg ikke at du kan lave en betinget kompilering.

Pga. manglen på kompilerdirektiver vil du ikke nogen steder i sourcen kunne specifere, hvilke metoder der skulle kompileres i de forskellige tilfælde.

Dog er jeg lidt i tvivl. Du siger at det skal _kører_ under både 1.1.8 og 1.2.0 .... ???
Mener du at det først skal kompileres, når det skal bruges eller taler du om versionsnummeret på de JVM\'er (java virtual machine) som skal køre dit program.

Enten skriver du koden, så den er kompatibel med en JVM som kører 1.1.8, eller sørger du for at då fat i JVM\'ere til de terminaler, som også skal køre dit program.

Bottom line : Java kender ikke til betinget kompilering.....

/Søren Munk Skrøder
Avatar billede mtilsted Nybegynder
02. august 2000 - 17:06 #2
Det jeg mente var at jeg gerne ville lave 2 versioner af programmet. En til java version 1.1.8 og en til version 1.2.0. Den til version 1.1.8 skulle saa mangle nogle features. Men jeg ville gerne bygge begge versioner fra den samme source.
Avatar billede lynggaard Nybegynder
02. august 2000 - 22:34 #3
Det er med Java2 SE SDK 1.3 muligt at angive hvilken jvm-version bytecoder\'ne skal passe til, men det er som standard sat til alt efter 1.1, så der kan du ikke finde nogen hjælp

Jeg ser umiddelbart en løsningsmulighed:

1) Eftersom brugeren først får en fejl når du forsøger at kalde en metode der ikke er i 1.1.8 klasserne, kan du disable de dele af bruger grænsefladen som kalder de nyere metoder.


Det ville hjæple lidt hvis du kunne sige hvilke 1.2 features du bruger.
Avatar billede mtilsted Nybegynder
02. august 2000 - 22:44 #4
Saa nemt er det ikke, for version 1.1.8 skal indeholde mac features.
Problemet er at drag and drop(java.awt.dnd.*)
ikke er implementeret før 1.2.0. Men apple har lavet nogle speciale mac only drag and drop classer der virker under deres 1.1.8 compiler. Desuden har jeg lavet ting der af en eller anden ground kun virker under 1.1.8 og 1.2.2 men ikke 1.3.0 -(

Men jeg kan se det nok ender med at jeg maa dele min code i 3 dele. En universal ground del, samt en pc del, og en mac del.
Øv -(

Martin Tilsted.


Avatar billede bearhugx Nybegynder
02. august 2000 - 22:56 #5
I det tilfælde vil jeg tilråde at du sørger for at skrive koden med de nye features ind, men udkommenterer den, når du kompilerer den til v. 1.1.8

Dette er det eneste du kan gøre, da der som sagt ikke findes kompilerer-direktiver i java.

----

Derudover vil jeg foreslå at du bygger de tilføjede features ind som selvstændige klasser (modulariseret programmering), dvs. at holde de nye features så langt væk fra den øvrige kode så muligt så du ikke skal ind alt for mange steder og rette/udkommentere i koden bagefter.

Disse to versioner....  Er det pga. du har to forskellige miljøer, hvor det ene kun kan køre v. 1.1.8 ? ... Ellers vil jeg da kraftigt tilråde at programmere til v. 1.2.0. pga 2 fordele :

1 : Mange fejl er blevet rettet og punkter er blevet optimeret i JAVA 2 (v. 1.2.0 og opefter...)

2 : JVM\'ere, der understøtter JAVA 2 er meget udbredt. (JAVA 2 understøttes af IE, NS, Win98 etc.) (Ved ikke om JAVA 2 endnu understøttes af linux)....

-----

Btw : hvis du har nogle spørgsmål ang. selve kodningen kan du også skrive til mig. Jeg er IMHO ret god til Java (som er mit primære prog.sprog)
Derudover har jeg også erfaring med C++, Pascal, Delphi og VB.

/Søren Munk Skrøder
Datamatikerstuderende på 3. semester ved
Edb-skolen, Tietgenskolen, Odense.
S_Skroeder@hotmail.com
Avatar billede mtilsted Nybegynder
03. august 2000 - 00:34 #6
[Disse to versioner....  Er det pga. du har to forskellige miljøer, hvor det ene kun kan køre v. 1.1.8 ? ]

Yeps, programmet skal køre paa baade mac og windows, og mac har kun java 1.1.8. Det er kernen i hele problemet.

[Og der findes java 1.2.2 til linux.]

btw: Ved du hvor man kan finde en ordentlig
beskrivelse af hvordan containere(Swing) fordeler pladsen? Altsaa noget om hvilke componenter som expander hvornaar med hvilke layout managere?.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB