| Rev | Author | # | Line |
|---|---|---|---|
| 5 | StuartYeates | 1 | Notes for [Java] / [javac] users. |
| 2 | |||
| 3 | (''I use [Java] as a better [C++] and don't use any of the awt/swing stuff, so I can't help there, sorry'' —StuartYeates) | ||
| 4 | |||
| 5 | !!! MakeFile rules | ||
| 6 | |||
| 7 | make(1) and [Java] don't play very well together, because unless you're careful you end up starting a new VirtualMachine for every file you want to compile (see the 'classes' target below for a complete hack). Remember that tabs and spaces get confused when cutting and pasting (see MakeFile). | ||
| 8 | |||
| 10 | AristotlePagaltzis | 9 | <verbatim> |
| 5 | StuartYeates | 10 | JAVAC=javac |
| 11 | JAVACOPTIONS= -g:none -O | ||
| 12 | |||
| 13 | #make a .class file from a .java file | ||
| 14 | %.class: %.java | ||
| 15 | $(JAVAC) $(JAVACOPTIONS) $< | ||
| 16 | |||
| 17 | # JAVACC stuff | ||
| 18 | |||
| 19 | #name/location of javacc executable | ||
| 20 | JAVACC=/home/say1/bin/javacc | ||
| 21 | |||
| 22 | #javacc options | ||
| 23 | JAVACCOPTIONS=-SANITY_CHECK=true -FORCE_LA_CHECK=true -DEBUG_PARSER=true -DEBUG_TOKEN_MANAGER=true | ||
| 24 | |||
| 25 | # build a java file from a JavaCC file | ||
| 26 | %.java: %.jj | ||
| 27 | $(JAVACC) $(JAVACCOPTIONS) $< | ||
| 28 | |||
| 29 | # a target that builds all the .java files in sight | ||
| 30 | classes: | ||
| 10 | AristotlePagaltzis | 31 | $(JAVAC) $(JAVACOPTIONS) *.java */*.java */*/*.java |
| 32 | </verbatim> | ||
| 5 | StuartYeates | 33 | |
| 34 | !!! Tool support | ||
| 35 | |||
| 36 | # JavaDoc is your friend. | ||
| 37 | # [Ant] is your friend. | ||
| 38 | # JavaDeps is your friend. | ||
| 6 | StuartYeates | 39 | # [Eclipse] [IDE] is your friend (supersedes JavaDeps and integrates [Ant] and JavaDoc) |
| 5 | StuartYeates | 40 | |
| 41 | !!! Errors | ||
| 42 | |||
| 43 | Sometimes [javac]/[Java] complains that it can't find files which are plainly there or complains that they're in the wrong place. This is almost always a classpath or a package interaction problem. If the file is not in a package and is in the current directory: | ||
| 10 | AristotlePagaltzis | 44 | |
| 45 | # Check that the current directory is in the classpath | ||
| 46 | # Check whether you need to specific ~ClassName or <tt>~ClassName.java</tt> | ||
| 47 | # Check spelling. Spelling matters. | ||
| 5 | StuartYeates | 48 | |
| 49 | If the file is in a package: | ||
| 50 | |||
| 10 | AristotlePagaltzis | 51 | # Check the above points |
| 52 | # Check that the the file is in <tt>/some/path/to/a/dircetory/some/package/heirarchy/~ClassName.java</tt> and is called <tt>~ClassName</tt> and in <tt>/some/package/heirarchy/</tt> package | ||
| 53 | # Check that <tt>/some/path/to/a/dircetory/</tt> is in the the classpath | ||
| 54 | # Check that the current directory is not in the classpath | ||
| 55 | # Check the package name again | ||
| 9 | BenStaz | 56 | |
| 10 | AristotlePagaltzis | 57 | !! The public type ~SomeClassName must be defined in its own file |
| 58 | |||
| 59 | Check to make sure that the filename of the .java file has the same name as the class inside the file. | ||
| 9 | BenStaz | 60 | |
| 61 | !!! How do I run a jar file? | ||
| 62 | |||
| 63 | A JAR file (or Java Archive) is a zip file used to distribute a set of compiled Java classes with some associated metadata. It might be just a library, but could also be an application; in that case, you have to run it via the [JVM]:'''' | ||
| 64 | |||
| 10 | AristotlePagaltzis | 65 | <verbatim> |
| 66 | java -jar $JAR_FILE | ||
| 67 | </verbatim> | ||
| 5 | StuartYeates | 68 | |
| 69 | ---- | ||
| 70 | UserSubmittedNotes |
lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 2 times)