2010-11-12 2 views
0

Я использую QDox для анализа источников java. У меня есть проблема с этим интерфейсом:Получение .java из имени пакета

import test.Word; 

public interface Spellable { 
    /** 
    * Checks the spell of the word in a given language 
    */ 
    public boolean checkSpell (Word word); 
} 

В момент разбора типа Word, что мне нужно знать, где путь в файловой системе. Итак, есть ли способ узнать это ?, возможно, используя classpath?

+1

Вы хотите, чтобы текущий каталог или пакет класса? Расположение файловой системы будет зависеть от того, находится ли она в файле jar и где указан ваш путь к классу. –

+0

Я хочу местоположение в файловой системе, класс Word не находится в банке. Я не знаю, как использовать classpath для его получения. – Federico

ответ

0

Я не думаю, что это можно сделать с хорошим, 100% -одно-совместимым способом. Java на самом деле пытается немного отвлечь вас от файловой системы через механизм classpath.

Тем не менее, вы обычно можете получить путь к файлу через загрузчик классов. Первый шаг - получить ссылку на загрузчик классов, который может найти любой интересующий вас ресурс (обычно классный загрузчик для любого из ваших собственных классов будет работать нормально, если у вас более сложный сценарий, вы, надеюсь, знаете, какой загрузчик классов использовать) ,

Тогда вы можете задать загрузчик классов для размещения данного ресурса в качестве URL, например:

final ClassLoader loader = getClass().getClassLoader(); 
final URL resourceLocation = loader.getResource("com/mycomp/coolapp/checkthis.doc"); 

Теперь, если вам повезет, то URL будет использовать протокол file:/, и описать в локальной файловой системе. Если это так, вы можете извлечь этот путь и использовать его в качестве местоположения файловой системы любого ресурса, который вы только что искали. Если он не является ресурсом file:/, класс может даже не существовать на вашем локальном компьютере (например, он загружается удаленно через RMI), поэтому вам не повезло в любом случае.

Если это звучит сложно - возможно, вы можете перейти в рабочий каталог как системное свойство из сценария запуска Java (например, java ... -Dworking.dir=$(pwd)).

+0

.java Word находится в файловой системе. Я попробую ваш код. – Federico

+0

Вторая строка, которую вы написали, перенастраивает нуль, как я могу это сделать, чтобы добавить что-то в путь к классам ?, В этом случае мне нужно добавить к ней тестовую папку? – Federico

+0

@Federico, вам нужно добавить родительскую папку тестовой папки в путь к классам. – rsp

Смежные вопросы