Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #10399 > unrolled thread
| Started by | "giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com> |
|---|---|
| First post | 2011-12-01 06:37 -0800 |
| Last post | 2011-12-02 01:35 -0800 |
| Articles | 6 — 3 participants |
Back to article view | Back to comp.lang.java.programmer
filenames on the command line "giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com> - 2011-12-01 06:37 -0800
Re: filenames on the command line Lew <lewbloch@gmail.com> - 2011-12-01 06:54 -0800
Re: filenames on the command line "giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com> - 2011-12-01 07:46 -0800
Re: filenames on the command line Lew <lewbloch@gmail.com> - 2011-12-01 09:01 -0800
Re: filenames on the command line Roedy Green <see_website@mindprod.com.invalid> - 2011-12-02 01:56 -0800
Re: filenames on the command line Roedy Green <see_website@mindprod.com.invalid> - 2011-12-02 01:35 -0800
| From | "giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com> |
|---|---|
| Date | 2011-12-01 06:37 -0800 |
| Subject | filenames on the command line |
| Message-ID | <7ea0b15a-e937-4fb8-9045-f5ffca1cf6de@u6g2000vbg.googlegroups.com> |
The current directory has two files:
/* A.java */
package wrk.pkg;
import wrk.B;
class A { B b; }
/* B.java */
package wrk;
public class B { }
The command javac -d . A.java B.java
compiles successfully, while javac -d . A.java
halts because it "cannot find symbol: class B". My question is: by
adding other options, is it possible to have the compiler seek and
compile B.java without specifying the filename on the command line?
[toc] | [next] | [standalone]
| From | Lew <lewbloch@gmail.com> |
|---|---|
| Date | 2011-12-01 06:54 -0800 |
| Message-ID | <2304640.475.1322751289109.JavaMail.geo-discussion-forums@prfx15> |
| In reply to | #10399 |
giuseppe.on.usenet wrote:
> The current directory has two files:
That's your first mistake - using the current directory.
> /* A.java */
> package wrk.pkg;
This needs to be in directory "wrk/pkg/" relative to one of the classpath roots.
I.e., the current directory the way you're working.
> import wrk.B;
> class A { B b; }
>
> /* B.java */
> package wrk;
This needs to be in relative directory "wrk/".
Notice that this is necessarily a *different* directory than the other class.
> public class B { }
>
> The command javac -d . A.java B.java
You're supposed to use directory notation with javac rather than "dot" notation.
I was not aware that dot notation even worked here.
In any case, it only partially "worked", not completely, at best, because you have things in the wrong directories.
> compiles successfully, while javac -d . A.java
> halts because it "cannot find symbol: class B". My question is: by
Because things are in the wrong directories.
> adding other options, is it possible to have the compiler seek and
> compile B.java without specifying the filename on the command line?
Why don't you read the documentation?
You will find it astonishingly helpful.
--
Lew
[toc] | [prev] | [next] | [standalone]
| From | "giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com> |
|---|---|
| Date | 2011-12-01 07:46 -0800 |
| Message-ID | <3e86463f-a024-4307-bd31-230bb1b4041f@m7g2000vbc.googlegroups.com> |
| In reply to | #10400 |
On 1 Dic, 15:54, Lew <lewbl...@gmail.com> wrote: > giuseppe.on.usenet wrote: > > The current directory has two files: > > That's your first mistake - using the current directory. > I am studying for an Oracle certification and I found this exercise in a book. There are at least five similar questions and all of them put the classes in the same directory, even if they belong to different packages. I agree with you that this is not the best practice but it is not my fault if the quiz is conceived that way. > [...] > Why don't you read the documentation? > > You will find it astonishingly helpful. Three books + the man page should be enough but if I had found the answer there I wouldn't have posted here.
[toc] | [prev] | [next] | [standalone]
| From | Lew <lewbloch@gmail.com> |
|---|---|
| Date | 2011-12-01 09:01 -0800 |
| Message-ID | <3542558.42.1322758907619.JavaMail.geo-discussion-forums@prfi36> |
| In reply to | #10403 |
On Thursday, December 1, 2011 7:46:10 AM UTC-8, giuseppe.on.usenet wrote: > On 1 Dic, 15:54, Lew <lewb...@gmail.com> wrote: > > giuseppe.on.usenet wrote: > > > The current directory has two files: > > > > That's your first mistake - using the current directory. > > > > I am studying for an Oracle certification and I found this exercise in > a book. There are at least five similar questions and all of them put > the classes in the same directory, even if they belong to different > packages. I agree with you that this is not the best practice but it > is not my fault if the quiz is conceived that way. It's not "not a best practice", it's the wrong way to do it. It is your fault if you fail to learn the truth of what Java does. > > [...] > > Why don't you read the documentation? > > > > You will find it astonishingly helpful. > > Three books + the man page should be enough but if I had found the > answer there I wouldn't have posted here. Oracle's Java site has the best fundamental data and generally easiest to get to, plus it's authoritative. Everyone should have bookmarks to the tools documentation http://docs.oracle.com/javase/7/docs/ (or use http://lmgtfy.com/?q=java+tools+documentation) specifically http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#basic "You should arrange source files in a directory tree that reflects their package tree. For example, if you keep all your source files in /workspace, the source code for com.mysoft.mypack.MyClass should be in /workspace/com/mysoft/mypack/MyClass.java." The tutorials give the same information. -- Lew
[toc] | [prev] | [next] | [standalone]
| From | Roedy Green <see_website@mindprod.com.invalid> |
|---|---|
| Date | 2011-12-02 01:56 -0800 |
| Message-ID | <d28hd7hlqqsjnkn66ud0lp9qs0u7m3c661@4ax.com> |
| In reply to | #10400 |
On Thu, 1 Dec 2011 06:54:48 -0800 (PST), Lew <lewbloch@gmail.com> wrote, quoted or indirectly quoted someone who said : >> /* A.java */ >> package wrk.pkg; > >This needs to be in directory "wrk/pkg/" relative to one of the classpath roots. This drives every newbie nuts. I discovered that thinking about HOW the compiler finds java source and how java.exe finds classes made it all fall into place. see http://mindprod.com/jgloss/helloworld.html http://mindprod.com/jgloss/classpath.html http://mindprod.com/jgloss/package.html http://mindprod.com/jgloss/javacexe.html http://mindprod.com/jgloss/javaexe.html -- Roedy Green Canadian Mind Products http://mindprod.com For me, the appeal of computer programming is that even though I am quite a klutz, I can still produce something, in a sense perfect, because the computer gives me as many chances as I please to get it right.
[toc] | [prev] | [next] | [standalone]
| From | Roedy Green <see_website@mindprod.com.invalid> |
|---|---|
| Date | 2011-12-02 01:35 -0800 |
| Message-ID | <3t6hd75ep488kfvngqvvili6ji5n74v8sn@4ax.com> |
| In reply to | #10399 |
On Thu, 1 Dec 2011 06:37:50 -0800 (PST), "giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com> wrote, quoted or indirectly quoted someone who said : >he command javac -d . A.java B.java >compiles successfully, while javac -d . A.java >halts because it "cannot find symbol: class B". My question is: by >adding other options, is it possible to have the compiler seek and >compile B.java without specifying the filename on the command line? javac *.java It won't recompile if not necessary. If you want fast compiles you need ANT , if you have several packages to compile. see http://mindprod.com/jgloss/ant.html -- Roedy Green Canadian Mind Products http://mindprod.com For me, the appeal of computer programming is that even though I am quite a klutz, I can still produce something, in a sense perfect, because the computer gives me as many chances as I please to get it right.
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.java.programmer
csiph-web