Выполнение Java-класса в JAR из Java-программы - PullRequest
1 голос
/ 07 февраля 2012

Мой вопрос:

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

public class test
{   
public static void main(String args[])
{
    demo d1 = new demo();
    demo d2 = new demo("message passed from main class");
}
} 

public class demo
{
demo()}
System.out.println("message in demo class");
}
demo(String str)
{
System.out.println(str);
}}

Ответы [ 3 ]

2 голосов
/ 07 февраля 2012

Посмотрите на это: Упаковка программ в JAR-файлы

Когда у вас есть готовый основной класс и файл JAR, вы можете просто запустить основной класс с файлом JAR напуть к классам и Java найдут его.Предполагая, что класс demo находится в demo.jar, а ваш основной класс - test (как в вашем примере):

java -cp demo.jar test
0 голосов
/ 07 февраля 2012

Я думаю, правильный ответ нам использовать муравья, но:

javac test.java
javac demo.java
jar cf test.jar test.class demo.class
jar ufe test.jar test

, а затем

java -jar test.jar

Если вы собираетесь расширить это и продолжать не использовать ant, вы, вероятно, захотите, чтобы ваша система сборки остановилась при ошибке, и заметит, что javac не возвращает ненулевое значение при ошибке. Передайте его stderr во временный файл и затем завершите работу в зависимости от ненулевого возврата grep этого файла. например, из сценария сборки на устройстве, который не может использовать ant:

cd src
for F in R.java Maze.java EmptyActivity.java; do
  javac -d ../build/classes $P/$F 2> ~/tmp/javac.out
  echo -en "\033[1m"; cat ~/tmp/javac.out; echo -en "\033[0m"
  grep error ~/tmp/javac.out && exit
done
cd ..
0 голосов
/ 07 февраля 2012

Просто, если вы хотите использовать любой class in java, тогда этот класс должен присутствовать в class-path, потому что при запуске вашей программы все class, необходимые для этого, всегда смотрят в class path ..
.Вы должны установить путь к классу вашего demo.jar
Нет никакого способа установить путь к классу, посмотрите на это Как установить путь к классу

или просто вы можете сделатьдругой вариант использования java параметр -cp

java -cp /your jar path/demo.jar test
...