JavaScript не имеет области действия блока (но это имеет закрытие так, давайте назовем его даже?).
var x = 1;
{
var x = 2;
}
alert(x); // outputs 2
Предполагая, что это проект "Java SE" (в отличие, скажем, от веб-приложения или программы Ruby). Во-первых, отключите Компиляцию при сохранении в разделе Компиляция в свойствах проекта.
Во-вторых, добавьте в build.xml
:
<target name="-init-macrodef-java">
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
<attribute default="${main.class}" name="classname"/>
<attribute default="${run.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<exec executable="gksudo" failonerror="true">
<arg value="--"/>
<arg value="java"/>
<arg value="-classpath"/>
<arg path="@{classpath}"/>
<arg line="${run.jvmargs}"/>
<arg value="@{classname}"/>
</exec>
</sequential>
</macrodef>
</target>
Есть и другие вещи, которые вы можете точно настроить, но этого должно быть достаточно, чтобы вы началось.
Почему gksudo вместо sudo java Main? В любом случае вы можете просто настроить свой файл sudoers (в / etc) так, чтобы пароль не требовался от вашего пользователя, и все будет в порядке.
A very dumb tip: create new Ruby application, put it near to your java project, and put the following to main.rb
PROJECT_DIR = "MyJavaApp"
# These must be relative to java project's dir or absolute paths
CLASSPATH = %w[dist/lib/*.jar /usr/share/some/other/lib.jar]
SUDO_BIN = "gksudo"
# Append your app's jar file into cp!
MAIN_CLASS = "com.andrew.myapp.Main"
# Put your own opts here (-Xmx, -Xms, etc)
JVM_OPTS = "-client"
###############################################
# Calculating project's root. 1st dir is a root of Ruby project, second is a common root
projroot = File.expand_path(File.dirname(__FILE__) + "/../.."
java_args = JVM_OPTS
cp = []
# It uses globbing to expand *.jar style stuffs
CLASSPATH.each do |path|
cp += path.start_with?("/") ? Dir[path] : Dir[File.join(projroot, PROJECT_DIR, path)]
end
java_args += "-classpath " + cp.join(File::PATH_SEPARATOR) + " "
# The heart of our work...
system(SUDO_BIN + " java " + java_args + " " + MAIN_CLASS)
Set the ruby project to main project.
I didn't tried it, but there must be only typos.
I know, this is not a best solution, but NB starts java projects internally and seems doesn't provides a configuration option to do it.
Btw: this solution needs installing Ruby on Rails plugin into NetBeans. The script doesn't exits while your java program is running.
Important: this script assumes it runs under Unix-compatible OS (where an absolute path begins with '/')!