1Jan

Makefile For Java Application On Mac

1 Jan 2000admin
Makefile For Java Application On Mac 4,3/5 9584 votes

What command exactly are you typing in to run this? The error message suggests that you're trying to run a makefile as if it is a Java program,. The command 'make jar' creates a jar file with all class files (and other files of your choice, see the JAROBJS variable in the Makefile). The command 'make srcjar' creates a jar file with all java files. The command 'make bundle' creates a Mac OS X Application Bundle with all the jar file.

Do you have a particular error or message or diagnostic or issue, or something that's particularly wrong with Xcode? If installed, Java does work, and Java applications can be invoked.


Background: Java was deprecated from OS X a while back, and Java itself was removed from the default OS X 10.8 installation.


Given that Java is now an add-on for OS X, you'll want to check with Oracle — the owner of Java — for OS X kits and tools.


I don't know off-hand if Xcode still particularly supports Java (it was pretty weak, when last I checked), but I'd expect you'll be using makefiles for the work, and I'd also suspect that whatever Java support remains in Xcode will probably be going away in some future version of Xcode. (If support hasn't already disappeared. You may be using bash build scripts and makefiles to deal with Java now, or going forward.)


If you don't have access to the Apple developer forums and the discussions of tools available there, then the archives of the Apple Java-Dev mailing list can be a good spot to look for existing discussions, and to post questions related to Java development on OS X.


As for IDEs other than Xcode, Eclipse or NetBeans or IntelliJ IDEA, and BlueJ all run on OS X, and any of these would probably be a better long-term choices for Java development on OS X.

Dec 1, 2012 7:43 AM

9 3 likes 23,987 views Last modified May 6, 2013 11:31 AM

In a better world, no one would have to use Java anymore. Sadly there are still university programs where people are expected to use Java. Rather than cast people into the world of Eclipse, here are instructions on how to get Xcode building Java. These instructions are current as of Xcode 4.6.2. You will need to download a JDK from somewhere.


This is a basic environment meant only for writing simple school programs. It has no debugger. Replace <MyProject> with whatever you want to name your project. Your main project file, main project class, and Xcode project must use this name. Welcome to Java.


1) In Xcode, File > New > New Project > Other > External Build System

2) Give it a meaningful name <MyProject> and save it somewhere. Note the name. You'll need that later.

3) File > New > New File > Other > Empty

4) Give it a Java-friendly name. In my example, use <MyProject>.java

5) Copy the contents below into the file and save.

6) File > New > New File > Other > Empty

7) Save as Makefile.

8) Copy the contents below into the file and save.

9) The 'Run' (>) button should at least compile your Java now.


Now it gets tricky. You don't have to do the next part. You could just open a Terminal to your project directory and run java <MyProject> if you want. I strongly suggest that. You can also just type 'make' and use Xcode purely as a text editor.

9) Project > Scheme > Edit Scheme > Debug > Info tab

10) Executable > Other > type ^⌘g > type /usr/bin > choose java

11) Change Debugger to None

12) Arguments tab

13) For Arguments Passed on Launch, add $(TARGETNAME)

14) For Environment Variables, add CLASSPATH with a value of $(PROJECT_DIR)

15) For Expand Variables based on, use <MyProject>

16) Click the 'Run' (>) button.


PS: I have no idea how to run the Java debugger in Xcode. But then, I have no idea how to run the Java debugger at all.


Here are some starter file contents:

HelloWorld.java:

publicclass HelloWorld

{

Updated driver for amd radeon hd 5770 m mac. publicstaticvoid main(String[] args)

{

System.out.println('Hello, World!');

}

}


Makefile:

# A simple makefile for a Hello World Java program


# Define a makefile variable for the java compiler

JCC = javac


# Define a makefile variable for compilation flags

# The -g flag compiles with debugging information

JFLAGS = -g


# typing 'make' will invoke the first target entry in the makefile

# (the default one in this case)

default: $(subst .java,.class,$(wildcard *.java))


# this target entry builds the Average class

# the Average.class file is dependent on the Average.java file

# and the rule associated with this entry gives the command to create it

#

%.class : %.java

$(JCC) $(JFLAGS) $<


# To start over from scratch, type 'make clean'.

# Removes all .class files, so that the next make rebuilds them

#

clean:

$(RM) *.class



NOTE: Those indentations are true tab characters. Ugh!


Good luck on your class. Hopefully you can progress onto more complicated projects and eventually use a real language like Objective-C.