мишень и статус выхода

Очень просто добавить изображение в проект и просмотреть изображение. Сначала создайте в своем проекте папку, которая может содержать изображения любого типа.

Затем щелкните правой кнопкой мыши на Project ->>. Перейдите в Build Path ->>, сконфигурируйте Build Path ->>, добавьте папку Class ->>, выберите вашу папку (которую вы только что создали для хранения изображений) под именем проекта.

class Surface extends JPanel {

    private BufferedImage slate;
    private BufferedImage java;
    private BufferedImage pane;
    private TexturePaint slatetp;
    private TexturePaint javatp;
    private TexturePaint panetp;

    public Surface() {

        loadImages();
    }

    private void loadImages() {

        try {

            slate = ImageIO.read(new File("images\\slate.png"));
            java = ImageIO.read(new File("images\\java.png"));
            pane = ImageIO.read(new File("images\\pane.png"));

        } catch (IOException ex) {

            Logger.`enter code here`getLogger(Surface.class.getName()).log(
                    Level.SEVERE, null, ex);
        }
    }

    private void doDrawing(Graphics g) {

        Graphics2D g2d = (Graphics2D) g.create();

        slatetp = new TexturePaint(slate, new Rectangle(0, 0, 90, 60));
        javatp = new TexturePaint(java, new Rectangle(0, 0, 90, 60));
        panetp = new TexturePaint(pane, new Rectangle(0, 0, 90, 60));

        g2d.setPaint(slatetp);
        g2d.fillRect(10, 15, 90, 60);

        g2d.setPaint(javatp);
        g2d.fillRect(130, 15, 90, 60);

        g2d.setPaint(panetp);
        g2d.fillRect(250, 15, 90, 60);

        g2d.dispose();
    }

    @Override
    public void paintComponent(Graphics g) {

        super.paintComponent(g);
        doDrawing(g);
    }
}

public class TexturesEx extends JFrame {

    public TexturesEx() {

        initUI();
    }

    private void initUI() {

        add(new Surface());

        setTitle("Textures");
        setSize(360, 120);
        setLocationRelativeTo(null);        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                TexturesEx ex = new TexturesEx();
                ex.setVisible(true);
            }
        });
    }
}
15
задан lesmana 13 May 2013 в 16:17
поделиться

6 ответов

Вот eet . Работает со всеми Bash, которые мне попадаются, от 2.05b до 4.0.

#!/bin/bash
tee_args=()
while [[ $# > 0 && $1 != -- ]]; do
    tee_args=("${tee_args[@]}" "$1")
    shift
done
shift
# now ${tee_args[*]} has the arguments before --,
# and $* has the arguments after --

# redirect standard out through a pipe to tee
exec | tee "${tee_args[@]}"

# do the *real* exec of the desired program
exec "$@"

( pipefail и $ PIPESTATUS хороши, но я помню, что они были представлены в 3.1 или около того .)

5
ответ дан 1 December 2019 в 01:38
поделиться

Здесь наткнулся на пару интересных решений http://www.perlmonks.org/?node_id=597613 .

1) Доступна переменная $ PIPESTATUS в bash:

   false | tee /dev/null
   [ $PIPESTATUS -eq 0 ] || exit $PIPESTATUS

2) И простейший прототип «eet» в perl может выглядеть следующим образом:

   open MAKE, "command 2>&1 |" or die;
   open (LOGFILE, ">>some.log") or die;
   while (<MAKE>) { print LOGFILE $_; print }
   close MAKE; # to get $?
   my $exit = $? >> 8;
   close LOGFILE;
9
ответ дан 1 December 2019 в 01:38
поделиться
{ mycommand --foo --bar 2>&1; ret=$?; } | tee -a some.log; (exit $ret)
0
ответ дан 1 December 2019 в 01:38
поделиться
#!/bin/sh
logfile="$1"
shift
exec 2>&1
exec "$@" | tee "$logfile"

Надеюсь, это сработает для вас.

-2
ответ дан 1 December 2019 в 01:38
поделиться

G'day,

Предполагая bash или zsh,

my_command >>my_log 2>&1

NB Последовательность перенаправления и дублирования STDERR на STDOUT важна!

Правка: Упс. Не понимал, что вы тоже хотите видеть результат на экране. Это, конечно, направит весь вывод в файл my_log.

HTH

ура,

-2
ответ дан 1 December 2019 в 01:38
поделиться

Это работает с bash:

(
  set -o pipefail
  mycommand --foo --bar | tee some.log
)

Круглые скобки предназначены для ограничения эффекта pipefail только одной командой.

Из справочной страницы bash (1):

Статус возврата конвейера - это статус выхода последней команды, если не включена опция pipefail . Если pipefail включен, статус возврата конвейера - это значение последней (самой правой) команды для выхода с ненулевым статусом или ноль, если все команды завершаются успешно.
22
ответ дан 1 December 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: