Ich würde gern wissen auswieviele Klassen darf in Java ein Programm besitzen..
Darf in Java ein Programm nur eine Klasse haben ???eine primäre Klasse haben..?
Darf in Java ein Programm nur eine Klasse haben ???eine primäre Klasse haben..?
math.iso@live.de hat gesagt.:Darf in Java ein Programm nur eine Klasse haben ???
Und ich glaub mal auch für jeden anderenARadauer hat gesagt.:2^31 reicht aber glaub ich mal für einen anfänger ;-)
Grundsätzlich gibt es mindestens 2 Möglichkeiten:denn ich hab ein programm mit 2 klassen geschrieben ,die eine klasse konnte lesen und bei der anderen klasse hat er bicht verstanden der compiler bzw stecken geblieben
maki hat gesagt.:Grundsätzlich gibt es mindestens 2 Möglichkeiten:denn ich hab ein programm mit 2 klassen geschrieben ,die eine klasse konnte lesen und bei der anderen klasse hat er bicht verstanden der compiler bzw stecken geblieben
1. es liegt am Compiler
2. es liegt an dir
Wenn du dann bereit bist den Fehler doch bei dir zu suchen, könntest du ja ein bisschen Code posten, so dass wir helfen können.
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class Test {
private static final String CURRENT_PATH = System.getProperty("user.dir");
private static final String CLAZZ_NAME = "A";
//same type!!
private static long classCounter = 0;
//max = Long.MAX - 1 : we need a final class to close the App!!!
private static final long MAX_CLASSES = 150000-1;
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File dir = new File(CURRENT_PATH +"/src/");
dir.mkdir();
for(double d = 0 ; d < MAX_CLASSES; d++) {
String content = createClass();
File file = createFile();
writeFile(file, content);
classCounter++;
}
String content = createFinalClass();
File file = createFile();
writeFile(file, content);
System.out.println(classCounter + " Classes created");
}
static File createFile() {
return new File(CURRENT_PATH +"/src/"+CLAZZ_NAME + classCounter + ".java");
}
static String createClass() {
String clazzName = CLAZZ_NAME + classCounter;
return
"public class " + clazzName +"{\n" +
"\tprivate Object object;" +
"\n"+
"\tpublic " + clazzName + "() { \n" +
"\t\tthis.object = new " + CLAZZ_NAME + (classCounter+1) + "();\n" +
"\t\tSystem.out.println(this.object);\n" +
"\t}" +
"\n"+
"\tpublic String toString() {" +
"\n\t\treturn \"" + clazzName + "\";\n\t }\n"+
"\tpublic static void main(String[] args) {\n" +
"\t\t" +clazzName + " inst = new " + clazzName + "();\n\t}\n"+
"}";
}
static String createFinalClass() {
String clazzName = CLAZZ_NAME + classCounter;
return
"public class " + clazzName +"{\n" +
"\n"+
"\tpublic " + clazzName + "() { \n" +
"\t\tSystem.out.println(\"This is the end\");\n" +
"\t}" +
"\n"+
"\tpublic String toString() {" +
"\n\t\treturn \"" + clazzName + "\";\n\t }\n"+
"\tpublic static void main(String[] args) {\n" +
"\t\t" +clazzName + " inst = new " + clazzName + "();\n\t}\n"+
"}";
}
static void writeFile(File file, String content) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write(content);
bw.flush();
bw.close();
}
}
xxx@xxx-desktop:/main/develop/test$ javac Test.java
xxx@xxx-desktop:/main/develop/test$ java Test
149999 Classes created
xxx@xxx-desktop:/main/develop/test$ cd src/
xxx@xxx-desktop:/main/develop/test/src$ javac A0.java
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3209)
at java.lang.String.<init>(String.java:216)
at java.lang.StringBuilder.toString(StringBuilder.java:430)
at sun.net.www.protocol.jar.Handler.parseContextSpec(Handler.java:120)
at sun.net.www.protocol.jar.Handler.parseURL(Handler.java:66)
at java.net.URL.<init>(URL.java:596)
at java.net.URL.<init>(URL.java:464)
at sun.misc.URLClassPath$JarLoader.checkResource(URLClassPath.java:671)
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:756)
at sun.misc.URLClassPath.getResource(URLClassPath.java:168)
at java.net.URLClassLoader$1.run(URLClassLoader.java:192)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2383)
at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1406)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1365)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1292)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1292)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1234)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:715)
at com.sun.tools.javac.util.Messages.add(Messages.java:66)
at com.sun.tools.javac.util.Messages.<init>(Messages.java:52)
at com.sun.tools.javac.main.Main.getLocalizedString(Main.java:447)
at com.sun.tools.javac.main.Main.resourceMessage(Main.java:421)
at com.sun.tools.javac.main.Main.compile(Main.java:364)
at com.sun.tools.javac.main.Main.compile(Main.java:279)
at com.sun.tools.javac.main.Main.compile(Main.java:270)
at com.sun.tools.javac.Main.compile(Main.java:69)
at com.sun.tools.javac.Main.main(Main.java:54)
xxx@xxx-desktop:/main/develop/test/src$ ls | wc -l
157367
xxx@xxx-desktop:/main/develop/test/src$
Murray hat gesagt.:Auch dem javac kann man ja mehr Heap gönnen; mit javac -J-Xmx500m *.java sollte schon mehr möglich sein. Aber eigentlich war die Frage ja, aus wievielen Klassen ein Programm bestehen kann, und nicht, wieviele man gleichzeitig übersetzen kann.
public class MultiText {
public static void main (String[] args) {
HelloText engl = new HelloText();
HelloText germ = new HelloText();
germ.messageText = "Hallo, liebe Leute!";
HelloText cat = new HelloText();
cat.messageText = "Miau!";
engl.printText();
germ.printText();
engl.printText();
cat.printText();
engl.printText();
}
}
public class HelloText {
public String messageText = "Hello World!";
public void printText() {
System.out.println (messageText);
}
public class MultiText {
public static void main (String[] args) {
HelloText engl = new HelloText();
HelloText germ = new HelloText();
germ.messageText = "Hallo, liebe Leute!";
HelloText cat = new HelloText();
cat.messageText = "Miau!";
engl.printText();
germ.printText();
engl.printText();
cat.printText();
engl.printText();
class HelloText {
public String messageText = "Hello World!";
public void printText() {
System.out.println (messageText);
}
}
math.iso@live.de hat gesagt.:aha danke hat funktioniert ,ich hab was neues ausprobiert ,ich hab in einer klasse eine klasse reingepackt , also class HelloText in public class MultiText...Warum Funktioniert das Programm nicht mehr , der Compiler hat Probleme dann bei new HelloText (); bzw er kommt da nicht mehr weiter...
Code:public class MultiText { public static void main (String[] args) { HelloText engl = new HelloText(); HelloText germ = new HelloText(); germ.messageText = "Hallo, liebe Leute!"; HelloText cat = new HelloText(); cat.messageText = "Miau!"; engl.printText(); germ.printText(); engl.printText(); cat.printText(); engl.printText(); class HelloText { public String messageText = "Hello World!"; public void printText() { System.out.println (messageText); } } }
public class MultiText {
public static void main (String[] args) {
HelloText engl = new HelloText();
HelloText germ = new HelloText();
germ.messageText = "Hallo, liebe Leute!";
HelloText cat = new HelloText();
cat.messageText = "Miau!";
engl.printText();
germ.printText();
engl.printText();
cat.printText();
engl.printText();
class HelloText {
public String messageText = "Hello World!";
public void printText() {
System.out.println (messageText);
}
}
}
}
public class MultiText {
public static void main (String[] args) {
HelloText engl = new HelloText();
HelloText germ = new HelloText();
germ.messageText = "Hallo, liebe Leute!";
HelloText cat = new HelloText();
cat.messageText = "Miau!";
engl.printText();
germ.printText();
engl.printText();
cat.printText();
engl.printText();
}
}
class HelloText {
public String messageText = "Hello World!";
public void printText() {
System.out.println (messageText);
}
}
public class MultiText {
public static void main (String[] args)
{
HelloText engl = new HelloText();
HelloText germ = new HelloText();
germ.messageText = "Hallo, liebe Leute!";
HelloText cat = new HelloText();
cat.messageText = "Miau!";
engl.printText();
germ.printText();
engl.printText();
cat.printText();
engl.printText();
class HelloText {
public String messageText = "Hello World!";
public void printText() {
System.out.println (messageText);
}
}
}
}
Du postest dann doch nur eine Variante. Mach Dir doch bitte mal die Mühe und poste a) was Deiner Meinung nach gehen sollte aber doch nicht geht und b) was Deiner Meinung nicht gehen sollte aber doch geht.math.iso@live.de hat gesagt.:Warum gehts es mit beiden Varianten ,
1 Variante ,dass ich dich klassen unterteile
2 Variante ,dass die eine Klasse in der Methode der eine Klasse ist