JDBC в make-файле - PullRequest
       6

JDBC в make-файле

2 голосов
/ 03 июня 2011

Я пытаюсь написать make-файл для Java-проекта, как показано ниже.Я подключен к базе данных (установлен и протестирован, работает, когда я компилирую с другой IDE вместо javac).Я не уверен, как записать драйвер в make-файл.Для следующего make-файла после ввода make я получил сообщение: package com.mysql.jdbc не существует.Но у меня есть mysql-connector-java-5.1.16-bin.jar в той же папке, что и мой make-файл.

JFLAGS = -g
JC = javac\

.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

JavaLibraries = \
      mysql-connector-java-5.1.16-bin.jar 

CLASSES = \
    DBMain.java\
    Update.java\
    server.java\
    Client.java

default: classes

classes: $(CLASSES:.java=.class)

clean:
    $(RM) *.class

Спасибо за любой ввод.

Ответы [ 2 ]

2 голосов
/ 03 июня 2011

Я не могу особо подчеркнуть, что Java и make плохо сочетаются друг с другом.Вероятно, вы столкнетесь с серьезными проблемами, создав Java-проект с помощью make.

Однако, если вы действительно хотите использовать make, несмотря на все предупреждения, вам нужно настроить параметры classpath для компилятора Java:

JFLAGS = -g
JC = javac
CLASSPATH=mysql-connector-java-5.1.16-bin.jar:.

.SUFFIXES: .java .class
.java.class: 
      $(JC) $(JFLAGS) -cp $(CLASSPATH) $*.java

...

Так что CLASSPATH состоит изиспользовали JAR и корневой каталог пакета ваших файлов * .java (я предполагаю, что это текущий каталог), разделенных двоеточием в системах Unix / Linux или точкой с запятой в Windows.Затем в правиле .java.class вы должны вызвать компилятор Java с флагом -cp для передачи пути к классам.

1 голос
/ 03 июня 2011

Этот язык определения схемы базы данных проекта содержит примерный build.xml, который показывает, как инициализировать и протестировать базу данных через JDBC.Обратите внимание, что ant цели отлично подходят для команд make.

Приложение:

Мне нужно написать makefile, чтобы другие могли его использовать.

Этот другой ответ показывает хороший пример вызова javac непосредственно из makefile.Он показывает, как включить classpath, который может решить вашу непосредственную проблему;но такой подход быстро становится громоздким для более сложных сборок, таких как те, которые включают пакеты.Это может быть несколько смягчено с помощью функции subst:

PKG = com.name.util
PKG_PATH = $(subst .,/,$(PKG))

Более простой схемой является написание минимальной цели ant, такой как <target name="compile"…>, как показано здесь ;тогда соответствующая команда make проста:

.SUFFIXES: .java .class
.java .class: 
      ant compile

Конечно, makefile теперь зависит от ant, но ant довольно вездесущий .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...