Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #10399 > unrolled thread

filenames on the command line

Started by"giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com>
First post2011-12-01 06:37 -0800
Last post2011-12-02 01:35 -0800
Articles 6 — 3 participants

Back to article view | Back to comp.lang.java.programmer


Contents

  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

#10399 — filenames on the command line

From"giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com>
Date2011-12-01 06:37 -0800
Subjectfilenames 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]


#10400

FromLew <lewbloch@gmail.com>
Date2011-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]


#10403

From"giuseppe.on.usenet" <giuseppe.on.usenet@gmail.com>
Date2011-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]


#10405

FromLew <lewbloch@gmail.com>
Date2011-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]


#10417

FromRoedy Green <see_website@mindprod.com.invalid>
Date2011-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]


#10413

FromRoedy Green <see_website@mindprod.com.invalid>
Date2011-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