Что корректной является цель для переменной среды JAVA_HOME для Linux OpenJDK находящееся в Debian распределение?

Поскольку мы не можем сделать всю работу за вас, это должно дать вам представление о том, как может выглядеть цикл:

Option Explicit

Public Sub MyUpdateProcedure()
    Dim Employees As Range 'define the range of employees
    Set Employees = ThisWorkbook.Worksheets("SheetName").Range("F82:F96")

    Dim CurrentWorkbook As Workbook
    Const EmployePath As String = "J:\Planning\Medewerkers\"


    Dim Employe As Range
    For Each Employe In Employees 'loop throug all employees
        'open the workbook
        Set CurrentWorkbook = Workbooks.Open(EmployePath & Employe.Value & ".xlsm")

        With CurrentWorkbook.Sheets("Blad1")
            'your stuff here
        End With


        'your other stuff here

        'save and close workbook
        CurrentWorkbook.Close SaveChanges:=True
    Next Employe
End Sub

Обратите внимание, что вам следует избегать ActiveWorkbook и вместо этого установить открытую книгу в переменную типа Set CurrentWorkbook = Workbooks.Open, которую вы можете легко использовать тогда.

Также убедитесь, что все ваши Range(…) объекты имеют рабочую книгу / рабочий лист, указанный как ThisWorkbook.Worksheets("SheetName").Range(…), в противном случае Excel угадает, какой лист вы имеете в виду.


Также следует помнить об ошибках:

Set CurrentWorkbook = Workbooks.Open(EmployePath & Employe.Value & ".xlsm")

выдаст ошибку, если книга не существует, поэтому вы можете ее перехватить:

    'open the workbook
    Set CurrentWorkbook = Nothing 'initialize since we are in a loop!
    On Error Resume Next 'next line throws an error if file not found so catch it
    Set CurrentWorkbook = Workbooks.Open(EmployePath & Employe.Value & ".xlsm")
    On Error GoTo 0 'always re-activate error reporting!

    If Not CurrentWorkbook Is Nothing Then
        'file for employee was found
        With CurrentWorkbook.Sheets("Blad1")
            'your stuff here
        End With


        'your other stuff here

        'save and close workbook
        CurrentWorkbook.Close SaveChanges:=True
    Else
        'file for employee was not found
    End If
84
задан Nicolas Raoul 22 January 2019 в 01:35
поделиться

8 ответов

То, что наконец работало на меня (Grails теперь работает гладко), делает почти как Steve B., указал:

JAVA_HOME=/usr/lib/jvm/default-java

Таким образом, если пользователь изменяет JDK по умолчанию для системы, JAVA_HOME все еще работы.

default-java символьная ссылка на текущую JVM.

93
ответ дан MasterAM 24 November 2019 в 08:34
поделиться

Посмотрите то, что команда альтернатив обновления делает (она имеет хорошего человека...).

Вскоре - что происходит, когда у Вас есть java-sun-1.4 и java-opensouce-1.0..., какой берет "Java"? Это debian "/usr/bin/java" является символьной ссылкой и "/usr/bin/java-sun-1.4" является альтернативой Редактированию "/usr/bin/java"

: Как Richard сказал, update-alternatives недостаточно. На самом деле необходимо использовать update-java-alternatives. Больше информации в:

https://help.ubuntu.com/community/Java

-1
ответ дан elcuco 24 November 2019 в 08:34
поделиться

Моя корректная цель должна была всегда загружать его с Sun и просто устанавливать его тот путь. Тогда Вы знаете точно, в какой каталог все входит.

, Но если Вы предпочли бы придерживаться нечетного способа, которым Debian устанавливает его, мое лучшее предположение было бы родительским каталогом чуть выше, где Java и javac двоичные файлы расположены.

(так как при определении его в пути, это - $JAVA_HOME/bin) (Так в случае это было бы... $JAVA_HOME/share и $JAVA_HOME были бы/usr?)

хартри, которые не звучат правильными...

мне интересно слышать ответ на это также!

-1
ответ дан leeand00 24 November 2019 в 08:34
поделиться

Насколько я помню, я использовал сценарий альтернатив Java обновления вместо альтернатив обновления. И это действительно устанавливало JAVA_HOME для меня правильно.

0
ответ дан Tobias Schulte 24 November 2019 в 08:34
поделиться

Попытайтесь установить переменную JAVA_LIB также.

0
ответ дан Cantillon 24 November 2019 в 08:34
поделиться

У меня обычно нет переменной среды JAVA_HOME. Java может установить его сам. В Java java.home системное свойство должно быть доступным.

0
ответ дан iny 24 November 2019 в 08:34
поделиться

Стандартная установка Ubuntu, кажется, помещает различные версии Java в /usr/lib/jvm. Эти javac, Java, который Вы находите в своем пути, будет softlink к этому.

нет никакой проблемы с установкой Вашей собственной версии Java нигде, Вам нравится, пока Вы устанавливаете JAVA_HOME переменная среды и удостоверяетесь, что имели новый Java bin на своем пути.

А простой способ сделать это должно иметь Java, домой существуют как softlink, так, чтобы, если Вы хотите обновить или переключиться, присвоил версию Вам, только должны изменить каталог, на который это указывает на - например:

/usr/bin/java --> /opt/jdk/bin/java,

/opt/jdk --> /opt/jdk1.6.011
6
ответ дан BuZZ-dEE 24 November 2019 в 08:34
поделиться

Я всегда склонен устанавливать JAVA_HOME согласно /usr/bin/java.

JAVA_HOME="$(dirname -- "$(dirname -- "$(readlink -f /usr/bin/java)")")"

Таким образом, обе альтернативы указывают на то же местоположение

0
ответ дан 24 November 2019 в 08:34
поделиться
Другие вопросы по тегам:

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