有一个来自Apple的应用程序,它曾Jar Bundler
由Apple与Xcode分发.
目的Jar Bundler
是*.app
为Java应用程序创建Mac OS X应用程序包(目录),直到版本6(1.6.x)为Mac OS X用户提供便利.
截至目前,你仍然可以得到
又名
对于当前的Mac OS X Mountain Lion 10.8.2来说
但你无法得到Jar Bundler
.
我正在使用最新的Mac OS X 10.8.2和最新的Xcode 4.6(4H127),并安装了所有命令行工具.经过我所做的所有研究后,我希望它在这里:
/usr/share/java/Tools/Jar Bundler.app
Run Code Online (Sandbox Code Playgroud)
但没有Jar Bundler
.即使是全球搜索sudo find / -name Jar\ Bundler.app
也没有找到Jar Bundler
.
所以我的问题是:最后一个已知的Xcode版本是什么 Jar Bundler
注意:我知道还有其他方法可以实现Jar Bundler
此处的操作,例如使用Mac OS X JarBundler ANT Task或手动构建整个应用程序包,但这不是问题.
我有一个使用JarBundler打包的Java应用程序.该应用程序相当CPU密集型(许多大型Collection.sort()调用).
在Mac OS上,当使用64位JavaApplicationStub时,应用程序运行缓慢且缓慢.此JavaApplicationStub文件正在启动Java 64位VM.
我找到了一个只有32位的旧JavaApplicationStub文件.我在Bundle中替换它,应用程序运行速度提高了10倍!(因此,在应用程序运行时使用32位VM).
这有意义吗?为什么64位虚拟机这么慢?构建应用程序并破解JavaApplicationStub文件是否有意义?
建议表示赞赏.
我想一个特定的文件类型与我的应用程序相关联,所以当我双击此特定类型的文件之一,我的应用程序打开.这很好用,但是我双击的文件不会作为参数传递给我的程序.
如果我对我的情况与应用程序相关联txt
的文件,我双击todo.txt
,我的应用程序打开,但我不知道该txt
文件我双击.
从我可以读,这是它是如何应该在OS X工作,而不是依靠默认行为(它是如何工作的如Windows),我应该使用ApplicationListener.handleOpenFile();
的com.apple.eawt
.然而,当我尝试这个时,我被告知我不允许这样做:
访问限制:由于对所需库的限制而无法访问ApplicationListener类型/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar
在另一个问题中,一个人说他在一些中文网站上找到了解决方案,另一个人说根据Java的许可协议条款它是不合法的.
我在Mac OS X开发人员库中找不到它,在这个网站上关于JAR Bundler的任何链接似乎都很有用,只是将我发送到Apple开发者网站上的一个死页.
我错过了什么?是否应该几乎不可能做到这一点,即使它在其他操作系统上微不足道?
它可能值得一提......因为JAR
文件不能与OS X上的程序相关联,所以我使用JAR Bundler创建了一个OS X应用程序包 ; Apple工具专门用于将Java应用程序视为本机OS X应用程序的目的.使用它可以让我首先将文件类型与我的应用程序相关联.
我创建了一个简单的Java应用程序,每秒连续10秒为a添加一个新行JTable
.它由三个类组成.
程序启动后调用的主类
public class JarBundlerProblem {
public static void main(String[] args)
{
System.err.println("Initializing controller");
new Controller();
}
}
Run Code Online (Sandbox Code Playgroud)
一个控制器,用于创建GUI并对其进行更改 doWork()
public class Controller {
public Controller()
{
doWork(null);
}
public static void doWork(String s)
{
GUI gui = new GUI();
for (int i=0; i<10; i++)
{
gui.addRow("Line "+(i+1));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,GUI
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class GUI {
private JFrame frame = …
Run Code Online (Sandbox Code Playgroud)