Avatar billede dj_uncas Nybegynder
16. november 2006 - 22:42 Der er 8 kommentarer og
1 løsning

javac og flere projekter

Hejsa

Jeg har lige et par spørgsmål til javac (compileren):

1. Jeg har brugt eclipse som IDE, og brugt flere projekter derinde. Dermed ligger min kode i flere underfoldere. Hvordan får man javac til at tage højde for dette?

2. eclipse genererer to filer .classpath og .project til hver projekt. .classpath skal jeg vel bruge m. javac, men kan jeg godt smide .project ud? Med andre ord, skal javac bruge den?

3. eclipse har også genereret en .metadata mappe, vist med plugins i. Skal de med, hvis jeg laver en .zip der ikke skal andet end kompileres med javac? (det er til uddannelsen)
Avatar billede arne_v Ekspert
16. november 2006 - 22:59 #1
umiddelbart vil jeg sige at du skal beholde din dir struktur

den kan:
- bruges med Eclipse
- du kan lave en BAT fil med en javac kommando per dir og en passende classpath
- du kan lave en ant build.xml

javac behoever kun evt. jar filer som du skal bruge - normalt vil en Eclipse plugin
kun give ekstra funktionalitet i Eclipse og ikke skulle bruges af din kode
Avatar billede dj_uncas Nybegynder
16. november 2006 - 23:23 #2
all right.. Der stod bare et krav i opgaven om at det afleverede skal kunne kompileres m. javac, og da jeg aldrig har brugt den manuelt blev jeg helt i tvivl. Nu kender jeg heller ikke Java bedre end et par uger...

Jeg behøver vel ikke sende .class filer med?
Avatar billede arne_v Ekspert
17. november 2006 - 01:08 #3
det kan jeg ikke rigtigt svare på - det må fremgå af opgaven

umiddelbart ville jeg synes at det var pænere at aflevere en jar
Avatar billede dj_uncas Nybegynder
17. november 2006 - 10:05 #4
Det ville jeg også, men de vil jo gerne have kilden, så de kan se hvad jeg har lavet. Hmm.. De får også et par .class filer. Det værste der kan ske er at de brokker sig ;-)

Læg et svar!
Avatar billede arne_v Ekspert
18. november 2006 - 04:51 #5
for en C# Java context sammenligning se følgende
Avatar billede arne_v Ekspert
18. november 2006 - 04:52 #6
C:\e3\cs>type support.cs
using System;

namespace Support
{
    public class S1
    {
        public static void M1()
        {
            Console.WriteLine("I am M1");
        }
    }
    public class S2
    {
        public static void M2()
        {
            Console.WriteLine("I am M2");
        }
    }
}

C:\e3\cs>type program.cs
using System;

using Support;

namespace Program
{
    public class P1
    {
        public static void M3()
        {
            Console.WriteLine("I am M3");
        }
    }
    public class P2
    {
        public static void Main(string[] args)
        {
            S1.M1();
            S2.M2();
            P1.M3();
        }
    }
}

C:\e3\cs>csc /t:library /out:support.dll support.cs
Microsoft (R) Visual C# .NET Compiler version 7.10.6001.4
for Microsoft (R) .NET Framework version 1.1.4322
Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.


C:\e3\cs>csc /t:exe /out:program.exe /r:support.dll program.cs
Microsoft (R) Visual C# .NET Compiler version 7.10.6001.4
for Microsoft (R) .NET Framework version 1.1.4322
Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.


C:\e3\cs>program
I am M1
I am M2
I am M3
Avatar billede arne_v Ekspert
18. november 2006 - 04:54 #7
C:\e3\j>type support\S1.java
package support;

import java.lang.*;

public class S1 {
    public static void m1() {
        System.out.println("I am m1");
    }
}

C:\e3\j>type support\S2.java
package support;

import java.lang.*;

public class S2 {
    public static void m2() {
        System.out.println("I am m2");
    }
}

C:\e3\j>type program\P1.java
package program;

import java.lang.*;

public class P1 {
    public static void m3() {
        System.out.println("I am m3");
    }
}

C:\e3\j>type program\P2.java
package program;

import java.lang.*;

import support.*;

public class P2 {
    public static void main(String[] args) {
        S1.m1();
        S2.m2();
        P1.m3();
    }
}

C:\e3\j>cd support

C:\e3\j\support>javac *.java

C:\e3\j\support>cd ..

C:\e3\j>jar cvf support.jar support\*.class
added manifest
adding: support/S1.class(in = 386) (out= 275)(deflated 28%)
adding: support/S2.class(in = 386) (out= 276)(deflated 28%)

C:\e3\j>cd program

C:\e3\j\program>javac -classpath ..\support.jar *.java

C:\e3\j\program>cd ..

C:\e3\j>jar cvf program.jar program\*.class
added manifest
adding: program/P1.class(in = 386) (out= 277)(deflated 28%)
adding: program/P2.class(in = 371) (out= 267)(deflated 28%)

C:\e3\j>java -classpath program.jar;support.jar program.P2
I am m1
I am m2
I am m3
Avatar billede arne_v Ekspert
18. november 2006 - 04:54 #8
og et svar
Avatar billede dj_uncas Nybegynder
18. november 2006 - 15:42 #9
Super!
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