私はプロジェクトで取り組んでいます。メインメソッドの2番目の引数が '/'(Linuxの場合)で始まる場合、絶対パスとみなす必要があります(問題ありません) '/'で始まらなければ、クラスの現在の作業パスを取得し、与えられた引数にそれを追加する必要があります。パッケージを含む現在のクラス名を取得する
私はいくつかの方法でクラス名を取得することができます:System.getProperty("java.class.path")
、new File(".")
とgetCanonicalPath()
を、というように。..
問題があり、これは私だけのパッケージが格納されているディレクトリを与える - 私が持っているつまり場合".../project/this/is/package/name"に格納されているクラスは、 "/ project /"だけを与え、実際の.classファイルがあるパッケージ名は無視します。
提案がありますか?
EDIT: ここ
SOURCEDIRは絶対(「/」で始まる)、または我々は
SOURCEDIRからプログラムを実行する場所からの相対のいずれかになります行使の記述から取られた説明は、ですメインメソッドの引数です。どのように私はそのパスを見つけることができますか?
コードがJARにパッケージ化されている(またはそうでなければあなたが想定しているフォルダ/ファイル構造にない)場合、あなたはどうしますか?それは危険な前提です。これは小さな実験、クラス割り当て、またはその他の使い捨ての状況でうまくいくかもしれませんが、生産品質のコードのための前提を作る習慣にはならないでください。 –
クラスファイルへのパスを見つける意味がありません。また、練習の説明には、慎重に読んでいるとは言及されていません(*プログラムから*を実行する場所は、プログラムがユーザーから呼び出される現在のパスを意味します)。 –
要件をよく理解するのに役立つかもしれませんか?議論が '/'で始まっていることを確認する必要があります。そうであれば、それを絶対として使用してください。そのまま。しかし、もしそうでなければ、私はそれをどのように扱うべきですか? –